Linux下使用GDB工具调试程序
2015-12-10 15:27
686 查看
在Linux下调试程序一般用GDB来执行。
这里简要介绍一下是否gdb调试程序的方法:
(1)进入gdb调试:
gdb + 已经编译通过的可执行程序 -》 就进入调试模式。
例如:gdb MiddlePublisher
(2)r + 运行时的参数 -》 开始运行可执行程序。
例如 r -lxml2 -f refile
(3)b + 断点 -》设置调试的断点。
两种:一种是:b CMSTask.cpp:200 表示在CMSTask.cpp文件的第200行设置断点。
另一种:b TaskManager::buildPubWinTask 表示在执行buildPubWinTask这个函数的时候停止。
(4)取消断点:
dis 1 表示取消第一个断点
dis 2 表示取消第二个断点
(5)查看设置断点信息:
info b
(6)在断点停止处查看所在代码的详细信息:
l
(7)可以在gdb中直接编译,然后再重新运行时,gdb会直接执行新编译好的可执行程序。
例如:直接在gdb下执行make后再重庆运行。
(8)跟进一个函数:s
如果设置的断点是在一个函数入口。到达该断点时,键入s就可以进入该函数内部进行调试。如果有多个函数就多次键入S来进入内部的函数。
(9)单步执行:n
例如:直接在gdb下键入n,进行单步执行
(10)继续执行:c
例如:直接在gdb键入c,可以在断点停止后继续执行。
如果断点是一个循环,则可以继续执行一个循环,再停止断点上面。
这里简要介绍一下是否gdb调试程序的方法:
(1)进入gdb调试:
gdb + 已经编译通过的可执行程序 -》 就进入调试模式。
例如:gdb MiddlePublisher
(2)r + 运行时的参数 -》 开始运行可执行程序。
例如 r -lxml2 -f refile
(3)b + 断点 -》设置调试的断点。
两种:一种是:b CMSTask.cpp:200 表示在CMSTask.cpp文件的第200行设置断点。
另一种:b TaskManager::buildPubWinTask 表示在执行buildPubWinTask这个函数的时候停止。
(4)取消断点:
dis 1 表示取消第一个断点
dis 2 表示取消第二个断点
(5)查看设置断点信息:
info b
(6)在断点停止处查看所在代码的详细信息:
l
(7)可以在gdb中直接编译,然后再重新运行时,gdb会直接执行新编译好的可执行程序。
例如:直接在gdb下执行make后再重庆运行。
(8)跟进一个函数:s
如果设置的断点是在一个函数入口。到达该断点时,键入s就可以进入该函数内部进行调试。如果有多个函数就多次键入S来进入内部的函数。
(9)单步执行:n
例如:直接在gdb下键入n,进行单步执行
(10)继续执行:c
例如:直接在gdb键入c,可以在断点停止后继续执行。
如果断点是一个循环,则可以继续执行一个循环,再停止断点上面。
相关文章推荐
- Linux socket 初步
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝