当前位置: 首页 > news >正文

做别人一摸一样的网站犯法吗网页制作与设计元素是什么

做别人一摸一样的网站犯法吗,网页制作与设计元素是什么,鸣蝉建站平台,目前做公司网站有没有用前言 1.本系列面试八股文的题目及答案均来自于网络平台的内容整理#xff0c;对其进行了归类整理#xff0c;在格式和内容上或许会存在一定错误#xff0c;大家自行理解。内容涵盖部分若有侵权部分#xff0c;请后台联系#xff0c;及时删除。 2.本系列发布内容分为12篇…前言 1.本系列面试八股文的题目及答案均来自于网络平台的内容整理对其进行了归类整理在格式和内容上或许会存在一定错误大家自行理解。内容涵盖部分若有侵权部分请后台联系及时删除。 2.本系列发布内容分为12篇 分别是 c/c语言 数据结构与算法 GDB 设计模式 操作系统 系统编程 网络原理 网络编程 mysql redis 服务器 RPG 本文为第三篇后续会陆续更新。 共计200道八股文。 3.本系列的200道为整理的八股文系列的一小部分。完整整理完的八股文面试题共计1000道100W字左右体量太大故此处放至百度云盘链接 https://pan.baidu.com/s/1IOxQs0ifbSPGgxK7Yz7BtQ?pwdzl1i 提取码zl1i 需要的同学自取即可。 4.八股文对于面试的同学来说仅作为参考使用不能作为面试上岸的唯一准备还是要结合自身的技术能力和项目同步发育。 最后祝各位同学都能拿到自己满意的offer成功上岸 ———————————————— 三、GDB 01.怎么debug怎么看内存泄漏。 如何 Debug 打印日志在关键处添加输出语句打印变量的值、函数执行状态等信息可以快速定位代码问题。断点调试在关键函数或代码块设置断点通过单步执行来查看变量的值和程序的执行过程可以更细致地定位问题。使用工具常用的工具包括 GDB、Valgrind 等。GDB 可以进行断点调试和查看内存信息Valgrind 可以检测内存泄漏、非法内存访问等问题。 如何查看内存泄漏 使用 Valgrind 工具中的 Memcheck 功能运行程序时添加参数 --toolmemcheck然后会自动分析出哪些地方存在内存泄漏。在编写代码时在申请内存后必须要释放该内存这样可以避免内存泄漏产生。在使用 malloc() 和 new 申请堆空间时一定要配套使用 free() 和 delete 来释放空间。对于 C 中容器类 vector、map 等对象在不需要使用时及时清空或删除其中元素和对象指针避免其持有无用资源导致内存泄漏。对于长时间运行的进程应当注意监控系统资源情况并及时排查并解决可能存在的内存泄漏问题。 02.gdb 使用 - 多线程程序切换到某线程栈帧 - 如何查看寄存器值 在 gdb 中查看某个线程的寄存器值可以使用以下命令 先使用 info threads 命令查看当前所有线程的 ID。然后使用 thread 命令切换到指定线程。比如要切换到线程号为 3 的线程则输入 thread 3。使用 info frame 命令可以查看当前栈帧信息其中包括函数名、参数、局部变量等信息。如果需要查看寄存器值则需要进入某个具体的栈帧。使用 up 或 down 命令可以在不同的栈帧之间切换。每次执行 up 或 down 命令都会将当前位置切换到上层或下层的栈帧。在特定的栈帧中使用 info registers 或者 i r 命令即可查看当前寄存器的值。其中i r 可以缩写为 ireg 等几种形式。 总之在 gdb 中查看多线程程序中某个线程的寄存器值需要先通过 thread 切换到该线程然后再进入对应栈帧并使用相关命令进行操作。 03.怎么分析C的core文件 一、概述 使用c开发程序时经常会遇到运行中core的情况如果是偶发的就更加难以定位本文讲解如何使用gdb进行core位置的分析定位。 二、打开coredump文件生成 # 1. 支持产生coredump # 查看当前设置 cat /etc/security/limits.conf|grep core ulimit -c # 如果是unlimited,说明设置成功 # 设置最好加到业务启动命令里 ulimit -c unlimited# 2.控制core文件保存位置和文件名格式 # 查看目前使用的方式 cat /proc/sys/kernel/core_pattern # 修改生成位置和命名规则必须bash -c echo xxx方式不能通过vi修改 sudo bash -c echo /coredump/%e_%p_%t.core /proc/sys/kernel/core_pattern # 命名格式参数: %p - insert pid into filename 添加pid %u - insert current uid into filename 添加当前uid %g - insert current gid into filename 添加当前gid %s - insert signal that caused the coredump into the filename 添加导致产生core的信号 %t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间 %h - insert hostname where the coredump happened into filename 添加主机名 %e - insert coredumping executable name into filename 添加命令名 # qnx系统下没有/proc/sys/kernel/core_pattern文件需要用命令指定保存目录 dumper -d /coredump/# 3.测试让程序产生一个coredump kill -6 $pid kill -11 $pid三、使用gdb分析core 1、使用gdb分析coredump文件 gdb ./bin/ipc_server ipc_server.core # 必须使用与core时一样的bin/lib文件 (gdb) set args zmq 6000 # 指定运行时的参数 (gdb) bt # backtrace显示当前调用堆栈 (gdb) q # 退出gdb2、使用gdb调试bin文件 gdb -q ./bin/ipc_server (gdb) set args zmq 6000 # 指定运行时的参数 (gdb) r # run运行程序直到遇到 结束或者遇到断点 (gdb) bt # backtrace显示当前调用堆栈 (gdb) quit # 退出gdb04.GDB有哪些命令 1 启动gdb 1.1 运行时调试可执行程序 gdb attach pid或者 gdb attach pid1.2 运行结束调试core文件 gdb program core dump file2 gdb交互命令 2.1 运行 run (r) 其作用是运行程序当遇到断点后程序会在断点处停止运行等待用户输入下一步的命令。continue (c) 继续执行到下一个断点处或运行结束next (n) 单步跟踪程序当遇到函数调用时也不进入此函数体此命令同 step 的主要区别是step 遇到用户自定义的函数将步进到函数中去运行而 next 则直接调用函数不会进入到函数体内。step (s) 单步调试如果有函数调用则进入函数与命令n不同n是不进入调用的函数的until 当你厌倦了在一个循环体内单步跟踪时这个命令可以运行程序直到退出循环体。untilline 运行至某行不仅仅用来跳出循环finish 运行程序直到当前函数完成返回并打印函数返回时的堆栈地址和返回值及参数值等信息。call func(args)调用程序中可见的函数并传递“参数”如call gdb_test(55)quit (q) 退出gdb2.2 断点 break/breakpoints 可以简写为b break n : 在第n行处设置断点 //可以带上代码路径和代码名称 b xxx.cpp:578b fn1 if ab 条件断点设置break func 在函数func()的入口处设置断点如break cb_buttondelete n 删除第n个断点disable n 暂停第n个断点enable n 开启第n个断点clear n 清除第n行的断点info breakpoints 显示当前程序的断点设置情况delete breakpoints清除所有断点2.3 查看代码 list (l) 作用就是列出程序的源代码默认每次显示10行再次输入将接着上一次 list 命令的输出下边的内容。list line 将显示当前文件以“行号”为中心的前后10行代码如list 12list func 将显示“函数名”所在函数的源代码如list main 2.4 打印 print 表达式 (p 表达式)其中“表达式”可以是任何当前正在被测试程序的有效表达式比如当前正在调试C语言的程序那么“表达式”可以是任何C语言的有效表达式包括数字变量甚至是函数调用。print a 将显示 a 的值print a 将把 a 中的值加1,并显示出来print gdb_test(a) 将以变量 a 作为参数调用 gdb_test() 函数display 表达式 在单步运行时将非常有用使用display命令设置一个表达式后它将在每次单步进行指令后紧接着输出被设置的表达式及值。如 display awatch 表达式 设置一个监视点一旦被监视的“表达式”的值改变gdb将强行终止正在被调试的程序。如 watch awhatis 查询变量或函数info function 查询函数info locals 显示当前堆栈页的所有变量输出格式 一般来说GDB会根据变量的类型输出变量的值。但你也可以自定义GDB的输出的格式。 x 按十六进制格式显示变量。 d 按十进制格式显示变量。 u 按十六进制格式显示无符号整型。 o 按八进制格式显示变量。 t 按二进制格式显示变量。 a 按十六进制格式显示变量。 c 按字符格式显示变量。 f 按浮点数格式显示变量。p/format arg2.5 查询 where/bt 当前运行的堆栈列表bt backtrace 显示当前调用堆栈up/down 改变堆栈显示的深度set args 参数 指定运行时的参数show args 查看设置好的参数info program 来查看程序的是否在运行进程号被暂停的原因。2.6 分割窗口 ayout 用于分割窗口可以一边查看代码一边测试layout src 显示源代码窗口layout asm 显示反汇编窗口layout regs 显示源代码/反汇编和CPU寄存器窗口layout split 显示源代码和反汇编窗口Ctrl L 刷新窗口2.7 变量和表达式 print和许多GDB的命令一样可以接受一个表达式GDB会根据当前的程序运行的数据来计算这个表达式既然是表达式那么就可以是当前程序运行中的const常量、变量、函数等内容。可惜的是GDB不能使用你在程序中所定义的宏。在表达式中有几种GDB所支持的操作符 是一个和数组有关的操作符:: 指定一个在文件或是一个函数中的变量 eg p f2.c::x{} 表示一个指向内存地址的类型为type的一个对象需要注意的是如果你的程序编译时开启了优化选项那么在用GDB调试被优化过的程序时可能会发生某些变量不能访问或是取值错误码的情况。这个是很正常的因为优化程序会删改你的程序整理你程序的语句顺序剔除一些无意义的变量等所以在GDB调试这种程序时运行时的指令和你所编写指令就有不一样也就会出现你所想象不到的结果。对付这种情况时需要在编译程序时关闭编译优化。 2.8 数组 有时候你需要查看一段连续的内存空间的值。比如数组的一段或是动态分配的数据的大小。你可以使用GDB的“”操作符“”的左边是第一个内存的地址的值“”的右边则你你想查看内存的长度。 的左边是数组的首地址的值也就是变量array所指向的内容右边则是数据的长度其保存在变量len中其输出结果大约是下面这个样子的 p arraylen $1 {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40}2.9 查看内存 你可以使用examine命令简写是x来查看内存地址中的值 n、f、u是可选的参数。 n 是一个正整数表示显示内存的长度也就是说从当前地址向后显示几个地址的内容。 f 表示显示的格式参见上面。如果地址所指的是字符串那么格式可以是s如果地十是指令地址那么格式可以是i。 u 表示从当前地址往后请求的字节数如果不指定的话GDB默认是4个bytes。u参数可以用下面的字符来代替b表示单字节h表示双字节w表示四字节g表示八字节。当我们指定了字节长度后GDB会从指内存定的内存地址开始读写指定字节并把其当作一个值取出来。 x/3uh 0x54320 表示从内存地址0x54320读取内容h表示以双字节为一个单位3表示三个单位u表示按十六进制显示。2.10 自动显示 你可以设置一些自动显示的变量当程序停住时或是在你单步跟踪时这些变量会自动显示。相关的GDB命令是displaydisp。 display/fmt expr display/fmt $addr //expr是一个表达式fmt表示显示的格式addr表示内存地址当你用display设定好了一个或多个表达式后只要你的程序被停下来GDB会自动显示你所设置的这些表达式的值。删除自动显示dnums意为所设置好了的自动显式的编号。如果要同时删除几个编号可以用空格分隔如果要删除一个范围内的编号可以用减号表示如2-5。 undisplay dnums delete display dnumsdisable和enalbe不删除自动显示的设置而只是让其失效和恢复。 disable display enable display查看display设置的自动显示的信息。GDB会打出一张表格向你报告当然调试中设置了多少个自动显示设置其中包括设置的编号表达式是否enable。 info display2.11 设置显示选项 GDB中关于显示的选项比较多这里只例举大多数常用的选项。 set print address on/off 开/关地址输出当程序显示函数信息时GDB会显出函数的参数地址系统默认为打开的。 show print address 查看当前地址显示选项是否打开set print array on/off 开/关数组显示打开后当数组显示时每个元素占一行如果不打开的话每个元素则以逗号分隔。这个选项默认是关闭的。 show print array 查看当前数组显示选项是否打开。set print null-stop on/off 如果打开了这个选项那么当显示字符串时遇到结束符则停止显示。这个选项默认为off。set print pretty on/off 如果打开printf pretty这个选项那么当GDB显示结构体时会比较漂亮。set print sevenbit-strings on/off设置字符显示是否按“\nnn”的格式显示如果打开则字符串或字符数据按\nnn显示如“65”。set print union on/off 设置显示结构体时是否显式其内的联合体数据。eg typedef enum {Tree, Bug} Species; typedef enum {Big_tree, Acorn, Seedling} Tree_forms; typedef enum {Caterpillar, Cocoon, Butterfly} Bug_forms; struct thing {Species it;union {Tree_forms tree;Bug_forms bug;} form; }; struct thing foo {Tree, {Acorn}};p foo 打开$1 {it Tree, form {tree Acorn, bug Cocoon}} 关闭$1 {it Tree, form {...}}set print object on/off 在C中如果一个对象指针指向其派生类如果打开这个选项GDB会自动按照虚方法调用的规则显示输出如果关闭这个选项的话GDB就不管虚函数表了。这个选项默认是off。set print static-members on/off这个选项表示当显示一个C对象中的内容是是否显示其中的静态数据成员。默认是on。set print vtbl on/off 当此选项打开时GDB将用比较规整的格式来显示虚函数表时。其默认是关闭的。2.12 历史记录 当你用GDB的print查看程序运行时的数据时你每一个print都会被GDB记录下来。GDB会以$1, $2, $3 …这样的方式为你每一个print命令编上号。于是你可以使用这个编号访问以前的表达式如$1。这个功能所带来的好处是如果你先前输入了一个比较长的表达式如果你还想查看这个表达式的值你可以使用历史记录来访问省去了重复输入。 2.13 自定义变量 你可以在GDB的调试环境中定义自己的变量用来保存一些调试程序中的运行数据。要定义一个GDB的变量很简单只需。使用GDB的set命令。GDB的环境变量和UNIX一样也是以$起头。 egset $foo *object_ptr show convenience 查看当前所设置的所有的环境变量2.14 查看寄存器 info registers 查看寄存器的情况。包括浮点寄存器 info all-registers查看寄存器的情况。除了浮点寄存器3 离线调试 当你的用户只能给你提供一个coredump文件而没有实际运行环境的时候你也可以自己搭建离线调试环境。 需要准备好同版本的所有coredump进程涉及到的二进制文件包括动态链接库编译出带gdb编译选项的版本加载调试。 同版本指的是完全没有代码变更这样即使codedump文件使用release版本的软件生成的也可以用带符号信息的debug版本的软件来调试十分强大 gdb 进入gdb后需要设置下本地的对应lib的搜索路径 set solib-search-path lib1:lib2:libn05.gcc和g的区别 gcc和g是两个不同的编译器主要用于编译C语言和C语言的代码。 gccGNU Compiler CollectionGNU编译器集合是一个包括C、C、Objective-C、Fortran、Ada等多种语言的编译器。它可以对C语言进行编译但对于C程序则需要使用g命令。g是gcc针对C的一个前端。在处理文件时g会自动把源代码中以.cpp或者.C结尾的文件当做是C程序来处理并调用相应的后端进行编译。 因此主要区别在于 gcc主要用于编译C程序而g主要用于编译C程序。g除了支持 C 语言外还支持 C 语言并且可以正确地链接 C 库。编写 C 代码时不需要使用 g 前缀在这种情况下直接使用 gcc 即可而写 C 程序时则必须使用 g 前缀来调用 g 编译器。 06.Linux下程序有问题如何调试答GDB打开打上Breakpoint进行调试 在Linux下可以使用GDBGNU调试器来进行程序的调试。下面是基本步骤 编译程序时加上 -g 选项以便生成可供GDB使用的调试信息。打开终端在命令行中输入 gdb 命令并加上可执行文件名作为参数例如gdb my_program。在GDB提示符下输入 run 命令运行程序。如果程序出现错误GDB会在出错的位置停止执行并显示出错信息。可以在需要调试的代码行前打上 breakpoint断点用于暂停程序的执行。例如在GDB提示符下输入 break line_number line_number为需要暂停执行的代码行号然后再输入 run 命令重新运行程序即可。在程序暂停执行时可以使用 GDB 提供的一系列命令来检查变量、堆栈等信息以及单步执行代码、跳转到指定位置等操作。常用命令包括 print、backtrace、step、next、continue 等。调试完成后可以通过 quit 命令退出 GDB。
http://www.w-s-a.com/news/665062/

相关文章:

  • 柳州做网站设计的公司制作网站软件下载
  • 湖南seo网站开发苏州网络营销及网站推广
  • 如何发布自己做的网站郑州网站建设定制开发
  • 重庆网站商城宁波网络公司联系方式
  • 个人网站建设实验心得seo课程简介
  • 免费自助建站系统下载推广app网站
  • 用scala做的网站标题关键词优化技巧
  • 百度网站评级wordpress忘记admin
  • 建筑标准下载网站263企业邮箱 登陆
  • 旅游房地产网站建设德保网站建设
  • 网站高端建设wordpress订单系统
  • 建设网站成本增加网站备案
  • 行业网站建设方案百度云图片转wordpress
  • 如何建设网站推广平台营销客户管理软件
  • 网站制作南宁如何撰写一个网站规划建设方案
  • 建站网站和维护需要会什么杭州人防质监站网址
  • 唐山免费做网站莱芜吧贴吧最新消息
  • 韶关市建设工程造价网站网络营销的平台有哪些
  • 网站建设费大概多少钱成都网站建设低价
  • 做表格的网站东莞常平房价
  • 国家级建设网站高密做网站哪家强价位
  • 江西省新的建设厅三类人员网站做标记网站
  • 做最精彩绳艺网站产品设计培训
  • 营销型网站建设品牌深圳网络推广最新招聘
  • 单位网站等级保护必须做吗广州app软件开发公司
  • 免费flash网站模板怎么仿网站链接
  • 泉州网站建设哪家好平面设计转行做什么比较好
  • 忘记网站备案账号设计一个网站
  • 国内购物网站哪个最好海珠营销网站建设报价
  • 小型网站搭建logo免费制作