
gdb
vivianke
这个作者很懒,什么都没留下…
展开
-
gdb调试 给变量赋值
《Linux环境下C编程指南(第二版)》p71中提到gdb的print命令的作用,其中有一个作用就是给变量赋值。命令格式如下:(gdb)print 变量=表达式示例如下:原创 2012-09-01 00:27:33 · 4015 阅读 · 0 评论 -
gdb查看内存
查看内存《Linux环境下C编程指南(第二版)》p94 查看内存你可以使用examine命令(简写是x)来查看内存地址中的值。x命令的语法如下所示:x/ n、f、u是可选的参数。n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容。 对于32位的系统,一个地址正好4个字节,如图:f 表示显示的格式,参见上面。如果地址所指原创 2012-06-02 00:26:12 · 422 阅读 · 0 评论 -
gdb 设置显示选项
《Linux环境下C编程指南(第二版)》p95 设置显示选项1,打开地址输出,当程序显示函数信息时,gdb会显示函数的参数地址,该选项默认是打开的经过测试发现只有指针参数,才会显示地址:set print addressset print address on当使用f或者frame查看函数信息,如下查看当前函数的参数地址显示选项是否打开show print a原创 2012-09-16 01:22:51 · 568 阅读 · 0 评论 -
gdb 设置显示选项2
5,设置结构体的显示方式set print pretty 默认是off,即结构体的每个元素显示在一行中,当为on的时候,结构体的每个元素分行显示,如下:原创 2012-09-16 03:05:35 · 451 阅读 · 0 评论 -
gdb 跳转执行
《Linux环境下C编程指南(第二版)》p100 gdb 跳转执行gdb提供了乱序执行的功能,也就是说,gdb可以修改程序的执行顺序,可以让程序执行随意跳转。这个功能可以由gdb的jump命令来实现。1,指定下一条语句的行号,包括1.数字;2.(+/-)偏移;3.文件名:行号jump 备注:jump +1表示跳过当前语句,若要跳过下一个语句,则需要使用jump +2示例使用原创 2012-09-17 00:41:57 · 4048 阅读 · 0 评论 -
gdb 查看源代码
《Linux环境下C编程指南(第二版)》p89查看源代码相关命令前面已经介绍了,使用快捷键Ctrl+x+a打开源代码显示窗口http://blog.youkuaiyun.com/vivianke/article/details/7931283若gdb不支持快捷键Ctrl+x+a,则需要知道以下查看源代码显示的命令1,显示第linenum行周围的源代码list 或者list 2,显示函数原创 2012-09-15 01:39:16 · 2399 阅读 · 0 评论 -
gdb 指定源文件的路径
《Linux环境下C编程指南(第二版)》p90 指定源文件的路径1,gdb提供了可以让用户指定源文件路径的命令,以便gdb进行搜索:directory dir 添加一个源文件路径到当前路径的前面。如果要指定多个路径,在UNIX下可以使用":",在Windows下可以使用";"2,清除所有的自定义的源文件搜索路径信息:directory3,显示定义了的源文件搜索路径:s原创 2012-09-15 02:42:18 · 1117 阅读 · 0 评论 -
gdb 打印数组
《Linux环境下C编程指南(第二版)》p93 打印数组1,对于静态数组int array[] = {1, 2, 3, 4};(gdb) print array2,对于动态分配数组int *array = (int*)malloc(10 * sizeof(int));print *array1@10原创 2012-09-15 09:55:15 · 893 阅读 · 0 评论 -
gdb 对象选项设置
《Linux环境下C编程指南(第二版)》p97 对象选项设置在C++中,当一个对象指针指向其派生类时,如果打开这个选项,gdb会自动按照虚方法调用的规则显示输出。如果关闭这个选项,gdb就不管虚函数表了。该选项默认是off,即print对象指针,只显示输出该指针的定义类型。设置对象选项:set print object 查看对象选项的设置:show print object原创 2012-09-16 11:42:16 · 390 阅读 · 0 评论 -
gdb 使用set修改变量的值
《Linux环境下C编程指南(第二版)》p80 使用set命令修改变量的值,p99 使用print修改变量的值1,调试中需要修改临时变量的值时,可以使用set命令语法:set variable key = valueset var key = value示例:(gdb) set variable array[1] = 122,另一种更简单的方式,使用print命令修改原创 2012-09-09 23:39:13 · 18138 阅读 · 0 评论 -
gdb 使用::查看变量
《Linux环境下C编程指南(第二版)》p92 使用::查看变量file::variablefunction::variable对于文件名,需要使用'单引号,如下所示:原创 2012-09-15 09:23:32 · 384 阅读 · 0 评论 -
gdb 搜索源代码
《Linux环境下C编程指南(第二版)》p90 搜索源代码1,向前搜索forward-search search 2,向后搜索reverse-search 为正则表达式,常用的搜索用法如下:1,搜索完整匹配func();语句search func();2,搜索包含func()语句search .*func().*备注:若第n行被索引到,则下次搜索会从第n行开始。原创 2012-09-15 02:09:50 · 380 阅读 · 0 评论 -
cygwin gdb调试显示源码窗口
在cygwin中使用gdb调试的时候,可以通过如下方式显示源码。使用示例:(gdb) b mainBreakpoint 1 at 0x401191: file test4_4.c, line 4.(gdb) rStarting program: /home/Administrator/linux-study/book_linuxc/chapter4/a.exe[New th原创 2012-09-01 00:43:19 · 1270 阅读 · 0 评论 -
gdb 流程控制
(gdb)s单步执行(gdb)n单步执行,但不展开函数调用(gdb)c继续执行(gdb)u执行至循环结束(gdb)u 123执行至123行(gdb)finish跳出当前函数(gdb)bt查看当前函数调用堆栈(gdb)frame 3跳转到函数堆栈中索引为3的函数上下文参考链接:http://blog.sina.com.cn/s/blog_60bfd6400转载 2012-09-09 22:31:40 · 370 阅读 · 0 评论 -
gdb printf命令的使用
《Linux环境下C编程指南(第二版)》p80 提到在gdb中使用printf命令显示内存数据(同x命令类似)该命令和c语言中的printf()类似。示例如下:(gdb) printf "%2.2s\n", (char*)内存地址原创 2012-09-09 23:29:25 · 2178 阅读 · 0 评论 -
gdb 管理断点
参考链接:http://blog.sina.com.cn/s/blog_60bfd6400100eola.html(gdb)info b查看所有断点信息(gdb)d删除所有断点(gdb)d 2删除2号断点(gdb)enable 1打开1号断点(gdb)disable 5禁用5号断点转载 2012-09-10 22:40:12 · 345 阅读 · 0 评论 -
gdb 使用continue/cont num命令
《Linux环境下C编程指南(第二版)》p82说明如何使用contiue num命令首先需要在循环体内某行设置断点,然后执行该命令,可以使程序在运行过程中忽略该断点num次,就是说在num+1次执行到该断点时才暂停程序的运行。这个功能使得调试循环体内的代码更方便。(gdb) continue num原创 2012-09-10 23:05:31 · 900 阅读 · 0 评论 -
gdb 使用condition命令设置断点条件
《Linux环境下C编程指南(第二版)》p82说明如何使用condition命令设置断点条件语法:condition 断点编号 条件表达式首先需要设置断点,然后使用condition命令设置断点触发的条件如下图所示,在断点1处设置触发条件:breakpoints窗口:原创 2012-09-10 23:56:02 · 485 阅读 · 0 评论 -
gdb 使用tbreak创建临时断点
《Linux环境下C编程指南(第二版)》p83说明如何使用tbreak创建临时断点语法:tbreak line-number该命令会在line-number处创建一个临时断点,该断点只能被激活一次。相同的功能:enable delete breakpoint-sn此命令在断点breakpoint-sn被激活后被删除。原创 2012-09-11 00:09:49 · 498 阅读 · 0 评论 -
gdb 设置断点
(gdb)b 123在当前源文件的123行设置断点(gdb)b abc.cpp : 123在源文件abc.cpp的123行设置断点(gdb)b foo在全局函数foo设置断点(gdb)b foo::bar在类foo的成员函数bar设置断点(gdb)b ns::foo::bar在命名空间ns中的类foo的成员函数bar设置断点(gdb)b 123 if foo == 1 && b转载 2012-09-09 23:42:59 · 483 阅读 · 0 评论 -
gdb 查看栈信息
《Linux环境下C编程指南(第二版)》p86 查看栈信息相关的命令1,打印当前的函数调用栈的所有信息backtrace或者bt2,只打印栈顶上n层的栈信息backtrace 或者bt 3,只打印栈底下n层的栈信息backtrace 或者bt 4,切换当前栈信息(n表示栈中层的索引,0表示栈顶)frame 或者 f 若不输入n,则显示当前栈的信息5,原创 2012-09-15 01:16:50 · 633 阅读 · 0 评论 -
gdb core dump设置和使用
环境:Ubuntu 10.10用户:root1,设置允许产生的core dunp文件大小,系统默认是0,这样系统就不dump出core file,使用以下命令修改允许core dump的文件大小:ulimit -c 10000该命令只对当前的窗口有效。2,默认情况下,core dump生成的文件名为core,而且就在程序当前目录下。通过修改/proc/sys/k原创 2012-09-18 07:55:51 · 617 阅读 · 0 评论