当代码写好了并在Linux上运行的时候,有的时候程序会崩溃,比如数组越界、除0、访问了野指针等。这就需要查找程序中的bug,使用gdb是一个比较好的方法。
对一个二进制进行调试的时候,执行`gdb bin`就可以了,bin代表要测试的二进制,如果是要调试core文件,执行`gdb bin corefile`core file是程序coredump时候将内存dump到磁盘上的文件,这样就可以快速的查看core的位置了。
另外也可以在线的调试程序`gdb attach $pid`,$pid代表进程号。
如果想要对二进制进行gdb调试,需要在编译的时候加上`-g`的编译参数,如果是使用bazel进行编译,需要指定`bazel //pos/to:target -c dbg`,表示编译出来的二进制中包含了gdb调试符号
下面列出gdb调试程序的一些基本命令:
- run 启动当前的进程,功能和start类似
- set args 设置变量的值
- block 设置断点,缩写是b,
- delete 删除断点,可以先info下所有的断点,然后删除调指定的序号的断点
- info 和locals一起使用,能够将当前帧的所有变量打印出来
- print 打印变量,如果是指针的时候,需要解引用
- next 执行下一句
- step 进入到函数的内部
- list 查看程序运行到的位置
- continue 如果是使用了gdb attach去在线的调试,或者是设置了断点后程序停止了,需要使用c去继续执行
- backtrace 查看进程当前的栈信息
- frame 可以直接的跳转到对应的帧
- show 可以展示出来一些变量值
- call 调用函数
1万+

被折叠的 条评论
为什么被折叠?



