调用gdb编译需要在cc后面加 -g参数再加-o;
[root@redhat home]#gdb 调试文件:启动gdb
(gdb) l :(字母l)从第一行开始列出源码
(gdb) break n :在第n行处设置断点
(gdb) break func:在函数func()的入口处设置断点
(gdb) info break: 查看断点信息
(gdb) r:运行程序
(gdb) n:单步执行
(gdb) c:继续运行
(gdb) p 变量 :打印变量的值
(gdb) bt:查看函数堆栈
(gdb) finish:退出函数
(gdb) shell 命令行:执行shell命令行
(gdb) set args 参数:指定运行时的参数
(gdb) show args:查看设置好的参数
(gdb) show paths:查看程序运行路径;
set environment varname [=value] 设置环境变量。如:set env USER=hchen;
show environment [varname] 查看环境变量;
(gdb) cd 相当于shell的cd;
(gdb)pwd :显示当前所在目录
(gdb)info program: 来查看程序的是否在运行,进程号,被暂停的原因。
(gdb)clear 行号n:清除第n行的断点
(gdb)delete 断点号n:删除第n个断点
(gdb)disable 断点号n:暂停第n个断点
(gdb)enable 断点号n:开启第n个断点
(gdb)step:单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的
- list :简记为 l ,其作用就是列出程序的源代码,默认每次显示10行。
- list 行号:将显示当前文件以“行号”为中心的前后10行代码,如:list 12
- list 函数名:将显示“函数名”所在函数的源代码,如:list main
- list :不带参数,将接着上一次 list 命令的,输出下边的内容。
注意 :如果运行list 命令得到类似如下的打印,那是因为在编译程序时没有加入 -g 选项: (gdb) list 1 ../sysdeps/i386/elf/start.S: No such file or directory. in ../sysdeps/i386/elf/start.S
|
- run:简记为 r ,其作用是运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令。
- 回车:重复上一条命令。
- set args:设置运行程序时的命令行参数,如:set args 33 55
- show args:显示命令行参数
- continue:简讯为 c ,其作用是继续运行被断点中断的程序。
- break:为程序设置断点。
- break 行号:在当前文件的“行号”处设置断点,如:break 33
- break 函数名:在用户定义的函数“函数名”处设置断点,如:break cb_button
- info breakpoints:显示当前程序的断点设置情况
- disable breakpoints Num:关闭断点“Num”,使其无效,其中“Num”为 info breakpoints 中显示的对应值
- enable breakpoints Num:打开断点“Num”,使其重新生效
- step:简记为 s ,单步跟踪程序,当遇到函数调用时,则进入此函数体(一般只进入用户自定义函数)。
- next:简记为 n,单步跟踪程序,当遇到函数调用时,也不进入此函数体;此命令同 step 的主要区别是,step 遇到用户自定义的函数,将步进到函数中去运行,而 next 则直接调用函数,不会进入到函数体内。
- until:当你厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体。
-
finish: 运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参数值等信息。
- stepi或nexti:单步跟踪一些机器指令。
- print 表达式:简记为 p ,其中“表达式”可以是任何当前正在被测试程序的有效表达式,比如当前正在调试C语言的程序,那么“表达式”可以是任何C语言的有效表达式,包括数字,变量甚至是函数调用。
- print a:将显示整数 a 的值
- print ++a:将把 a 中的值加1,并显示出来
- print name:将显示字符串 name 的值
- print gdb_test(22):将以整数22作为参数调用 gdb_test() 函数
- print gdb_test(a):将以变量 a 作为参数调用 gdb_test() 函数
- bt:显示当前程序的函数调用堆栈。
- display 表达式:在单步运行时将非常有用,使用display命令设置一个表达式后,它将在每次单步进行指令后,紧接着输出被设置的表达式及值。如: display a
- watch 表达式:设置一个监视点,一旦被监视的“表达式”的值改变,gdb将强行终止正在被调试的程序。如: watch a
- kill:将强行终止当前正在调试的程序
- help 命令:help 命令将显示“命令”的常用帮助信息
- call 函数(参数):调用“函数”,并传递“参数”,如:call gdb_test(55)
- layout:用于分割窗口,可以一边查看代码,一边测试:
- layout src:显示源代码窗口
- layout asm:显示反汇编窗口
- layout regs:显示源代码/反汇编和CPU寄存器窗口
- layout split:显示源代码和反汇编窗口
- Ctrl + L:刷新窗口
当然,gdb的功能远不止这些,包括多进程/多线程/信号/远程调试等功能在这里均没有提及,有需要的读者可以参考其它信息。
分享到:
相关推荐
这是GDB完全手册,用来在Linux环境下的GDB调试,很重要
This is the Tenth Edition, of Debugging with GDB: the GNU Source-Level Debugger for GDB (GDB) Version 8.1.90.20180814-git. Copyright © 1988-2018 Free Software Foundation, Inc. Permission is granted...
内部将FileGDB、HDF4、HDF5、GEOS、PROJ4、ECW、Jpg2000、libexpt、libcurl、libiconv、netcdf、xerces_c、sqlite3等常用的库全部编译进去 语言 C\C++、C#、Java、Python 含有帮助文档 如果程序不能执行,或者...
就目前而言,嵌入式Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:...采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试。
VisualGDB 是 Visual Studio 的一个非常强大的扩展,它允许您调试或调试嵌入式系统。这个程序有一个非常有吸引力的用户界面,它具有许多用于调试或调试代码的功能。VisualGDB 还有一个向导,可以帮助您调试程序并为...
2.支持gdb、mdb、shapefile格式的标准数据库建库 3.实现字段长度、字段别名、字段类型、图层别名、图层类型、要素集、坐标系的设置。 4.支持点、线、面、文本、表等图层 5.工具的实现过程无需写出读取临时表,更加...
gdb调试案例gdb64常用命令说明: [root@redhat home]#gdb 调试文件:启动gdb (gdb) l :(字母l)从第一行开始列出源码 (gdb) break n :在第n行处设置断点 (gdb) break func:在函数func()的入口处设置断点 (gdb) ...
GDB调试GDB调试GDB调试GDB调试GDB调试 GDB调试GDB调试GDB调试GDB调试GDB调试
GDB使用手册 GDB调试器使用手册(一) ................................................................................................. 1 使用GDB: ........................................................
功能:可以在arcgis软件中,利用mdb批量转gdb工具,实现批量的mdb转为gdb
GDB详细手册,文档内部分内容: //查看运行中的线程 (gdb) info thread //查看线程 (gdb) thread <n> //切换为线程id (gdb) bt //backtrace 打印堆栈 (gdb) break xx.cpp:xx thread all //在所有线程上打断点 (gdb) ...
(1)利用os.walk搜索制定目录下所有gdb目录下的要素,采用arcpy将gdb内的要素批量加载至arcmap中。 (2)实现的主要技术难点是目录、gdb名称、要素名称中存在中文,制造了很大的困难,本脚本顺利解决了中文乱码的...
gdb64.exe和gdb.exe,呐,如名字所示喽
GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大...
使用GDB调试,英文版。对于从事 Linux C/C++ 后台开发的读者来说,GDB 调试是需要熟练掌握的一项技能
visualgdb新版本对android的开发调试支持越来越好。我相信很多用户会对这个的需求越来越深入。喝水不忘挖井人,感谢VISUALGDB这个产品的开发者。更感谢fallrain 对此做的贡献。 Fixes in R5: Added a workaround for...
BDI3000/2000 是一款功能强大而且非常稳定耐用的JTAG/BDM仿真器,可以在 Windows/Linux平台下使用,通过...BDI支持很多调试器,其中bdiGDB采用标准的GDB远程协议,支持GNU debugger (GDB),是调 试Linux的首选工具。
arcgis批量mdb转gdb。arcgis批量mdb转gdb................
用GDB调试程序 重新编排,整洁美观。 GDB 概述 GDB 是GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。或许,各位比较喜欢那种图形界面方 式的,像VC、BCB 等IDE 的调试,但如果你是在 UNIX 平台下做软件,你...
比较全面的GDB调试使用文档。 GDB概述 使用GDB GDB的命令概貌 GDB中运行UNIX的shell程序 在GDB中运行程序 调试已运行的程序 暂停 / 恢复程序运行 一、设置断点(BreakPoint) 二、设置观察点(WatchPoint)...