如何使用gdb进行调试
2013-07-10 05:04
295 查看
只有一些个人经常会用到的指令。
GNU C++中可以在编译的中间阶段暂停,具体分为:
-E 预处理之后停止,未编译;
-S 编译产生汇编代码后停止,未汇编;
-C 汇编产生机器代码后停止,未链接。
或者不暂停,使用-o 获得目标程序。
调试之前,需要使用-g选项在目标代码中增加信息,产生目标代码的调试信息,然后将其装入调试器,如:
输入run可以运行程序,直到遇到断点暂停。
输入list可以将程序行号打印出来,一次10行,再次输入list可以打印接下来的10行。输入list n, 可以输出第n行附近的10行。
输入break n,可以在第n行设置断点。
输入delete breakpoint,删除所有断点,delete breakpoint n, 删除第n个断点。
输入clear,删除上一次暂停处的断点。clear n,删除第n行的所有断点。
输入next,单步调试,不进入子函数。
输入step,单步调试,进入子函数。
输入finish,在程序进入某一子函数时,退出该函数,返回上一层。
输入until n,运行到第n行停止。输入until,跳出当前循环体。
输入continue,可以继续运行程序,直到下一个断点。
输入quit,退出。
也可以只使用首字母,如r代表run,l代表list等。
还有一些针对数据的调试指令:
print xxx : 打印xxx变量一次,可以改变变量的输出进制或者数据类型,如 print /x xxx, 为输出变量xxx的十六进制格式。
display xxx : 每次暂停均打印xxx变量
ptype xxx : 查看变量xxx的数据类型
GNU C++中可以在编译的中间阶段暂停,具体分为:
-E 预处理之后停止,未编译;
-S 编译产生汇编代码后停止,未汇编;
-C 汇编产生机器代码后停止,未链接。
或者不暂停,使用-o 获得目标程序。
调试之前,需要使用-g选项在目标代码中增加信息,产生目标代码的调试信息,然后将其装入调试器,如:
$ g++ -g -o helloworld helloworld.cpp $ gdb helloworld ... (gdb)
输入run可以运行程序,直到遇到断点暂停。
输入list可以将程序行号打印出来,一次10行,再次输入list可以打印接下来的10行。输入list n, 可以输出第n行附近的10行。
输入break n,可以在第n行设置断点。
输入delete breakpoint,删除所有断点,delete breakpoint n, 删除第n个断点。
输入clear,删除上一次暂停处的断点。clear n,删除第n行的所有断点。
输入next,单步调试,不进入子函数。
输入step,单步调试,进入子函数。
输入finish,在程序进入某一子函数时,退出该函数,返回上一层。
输入until n,运行到第n行停止。输入until,跳出当前循环体。
输入continue,可以继续运行程序,直到下一个断点。
输入quit,退出。
也可以只使用首字母,如r代表run,l代表list等。
还有一些针对数据的调试指令:
print xxx : 打印xxx变量一次,可以改变变量的输出进制或者数据类型,如 print /x xxx, 为输出变量xxx的十六进制格式。
display xxx : 每次暂停均打印xxx变量
ptype xxx : 查看变量xxx的数据类型
相关文章推荐
- Window平台Grmon下如何使用gdb进行调试
- 如何使用Eclipse和GDB对JNI代码进行调试(JAVA和C)
- 什么是 core dump ? 以及如何使用gdb对 core dumped 进行调试
- 使用gdb在Android Emulator中进行调试
- 如何使用*.pdb与源代码进行Web程序的调试?
- 使用GDB进行调试
- GDB 进行调试 使用心得
- gdb的简单使用和gdb+gdbserver方式进行ARM程序调试
- Xcode常用技巧(1)-使用Xcode进行代码分析及GDB调试
- 如何使用firefox进行网页js调试
- db的简单使用和gdb+gdbserver方式进行ARM程序调试
- 使用 gdb 对程序进行汇编级调试
- 如何使用GDB调试Coredump文件
- GDB 进行调试 使用心得
- 如何使用GDB调试段错误
- gdb的简单使用和gdb+gdbserver方式进行ARM程序调试
- 使用eclipse+gdb进行arm板嵌入式linux远程调试的配置方法
- 详解如何使用Android Studio 进行NDK开发和调试
- 如何使用GDB调试多线程
- 如何使用 UC浏览器开发者版 进行移动端调试