1、调试基础

段错误:产生核心转储文件(core dump),也称吐核。进程异常终止时,把进程的内存信息转存到文件中,出现段错误说明内存越界访问。

Linux默认情况会忽略核心转储文件,需要手动设置。

ulimit -c unulimited      #获取核心转储文件

ulimit -c $((1024*1024*1024)) #获取小于1GB的核心转储文件

SIGQUIT信号会异常终止程序并产生核心转储文件,终端输入 Ctrl + \ 可以产生此信号。

gdb ./a.out  core.1234               #此命令可直接查看段错误在程序中的位置。

 

gcc  -g   -Wall  -O0                    #生成可调试代码,生成所有警告信息,不进行优化。

 

启动:

gdb a.out [core | PID]

加断点:

{break | b} [文件名:]{函数名 | 行号} [if i == 100]

运行:

{r | run}        直接运行,直到遇到断点停止

start             从main开始运行,会自动停留在main处

显示栈贞:

{bt | backtrace | i s | info stack | where}

显示变量:

{p | print} i

显示寄存器:

{info registers | i reg | i r}

单步执行:

{n | next}

继续执行:

{c | continue} [n]

当带有参数 n 时, 会 忽略 n 此 断点

监视点:

watch i      #监视变量值被修改

awatch i    #监视变量被访问 或 值被修改

rwatch i     #监视变量被访问

删除断点:

{delete | d}  断点号

改变变量的值:

set variable i=100

生成内核转储文件:

generate-core-file

调试正在运行的进程:

gdb a.out PID

gdb

attach PID

posted @ 2016-10-26 16:42  宁静淡泊  阅读(176)  评论(0编辑  收藏  举报