C/C++ 开发环境 gdb Linux
在Linux下,动态调试工具是gdb,运行于命令行下,也有版本使用于图形界面上。
gdb是GUN开源组织发布的,unix/linux 下基于命令行的程序调试工具。
主要有4个功能:
启动被调试程序
让被调试程序在所指定的调试断点处停住
当程序被停住时,可查看某个变量值
动态改变程序的执行环境
重要准备:
使用gdb调试C/C++程序的时候,需要在编译时把调试信息加入到可执行文件中,加上-g选项,如果没有这个选项,将看不到程序的函数名,变量名,所代替的全是运行时的内存地址
启动gdb(四种方法):
1.输入gdb,回车,此时处于gdb状态,可输入调试命令
2.也可在启动gdb同时加载可执行文件:gdb test
3.gdb<program> core 用gdb同时调试一个运行程序和一个core文件,core文件是程序非法执行core dump后产生的文件
4.gdb<program><PID> :如果程序是一个服务程序(守护程序),那么可以指定这个服务运行时的进程ID,gdb会自动attach上去,并调试它。program应该在PATH环境变量中搜索得到。
退出gdb:
在gdb状态下,输入命令quit就可退出调试
gdb常用命令:gdb 提示符下输入help <command>来查看某个命令的帮助
file命令加载程序:
file [可执行文件]
list命令显示源代码:
1.list不带参数,显示10行代码,从文件首行开始,第二次从上一次显示的末尾的后一行显示
2.lis显示指定行前后的源代码内容,list 9显示第9行的前五行和后六行的内容
3.显示始末行之间的源代码内容:lisr n1, n2 显示n1到n2行的内容
4.显示某函数附近的 源代码内容:list funcname
run 命令运行程序:
run 命令可以带参数 ,传递给main函数
显示传给main的参数 show args
重新设置传给main的参数 set args arg1 arg2 arg3......
break 设置断点:
1.根据行号设置断点 (gdb) break linenumber
2.根据函数名设置断点(gdb) break funcname
3. 执行非当前源文件的某行或者某函数时停止执行,比如 (gdb)break filename:linenum 或者(gdb)break filename:funcmane
4 根据停止条件执行程序,比如(gdb) break lienum if expr或者 (gdb) break funcname if expr