当前位置:Gxlcms > 数据库问题 > gdb调试

gdb调试

时间:2021-07-01 10:21:17 帮助过:3人阅读

技术分享

 

这样的错误提示基本上没用,直接backtrace 打印堆栈信息 

技术分享 

 已4层堆栈调用,前两个栈是开源的cJSON库的实现,应该不会出问题,从第3个开始我写的,所以直接frame 3  查看栈信息

 

技术分享

 发现group结构体的name变量为空。

定位到错误位置,然后该代码吧。查找错误就是这么简单!

 

下面是gdb常用的命令列表,贴一下

 

调用运行命令

 

命令

参数含义

说明

continue

 

令程序继续运行

step

 

单步步入

next

 

单步步过

finish

 

执行到当前函数代码直到函数返回

until

 

跳出循环,让程序一直执行,直到到达比发出until命令时所在源代码行号更大的位置

stdpi

 

指令级单步步入

nexti

 

指令级单步步出

print /f expr

要打印的表达式。其中可以是x十六进制 十进制o八进制等等。

打印表达式的值,可指定打印格式

whatis

 

查看变量数据类型的简要说明

ptype

 

查看变量数据类型的详细说明

x/nfu addr

要查看的内存地址

查看指定内存地址处的数据,可指定模式、长度等

Info registers

 

查看CPU寄存器

 

补充:

     Step命令,如果step命令将要运行的源代码行上有函数调用,那么step命令将导致GDB进入到被调用函数的内部。通常把step称为步入命令。这也是与next命令的区别。

其它命令:

 

命令

参数含义

说明

display

 

设置自动显示列表,不带参数时显示列表中所有表达式

delete display dnums..

自动显示列表的ID

删除自动显示列表

disable dislay dnums..

自动显示列表的ID

禁用自动显示列表

enable display dnums..

自动显示列表的ID

使用自动显示列表

info display

 

显示自动显示列表中的表达式

show convenience

 

显示快捷变量

macro expand expression

包含宏定义的表达式

将表达式宏展示

info macro macroname

宏定义的名字

查看宏定义的信息

generatre-core file

 

产生转储文件

backtrace

n 最内层的n个函数栈帧

-n 最外层n个函数栈帧

栈帧回溯

frame

栈帧号或者内存地址

选定栈帧,不带参数时显示栈帧简要信息

up

栈帧号

选定栈帧上移

down

栈帧号

选定栈帧下移

info frame

 

显示栈帧详细信息

info agrs

 

显示当前选定栈帧的函数参数

info locals

 

显示当前选定栈帧中的所有局部变量

set variable expr

赋值表达式

给变量赋值或者修改变量的值

print

赋值表达式

给变量赋值或者修改变量的值

jump

 

使程序从另外的地址开始执行

signal sig

信号值或者信号和名称

向被调试程序发送信号

call expr

包含函数调用的表达式

调用函数

print expr

包含函数调用的表达式

调用函数

list

函数名 行号 地址 偏移等

列出程序源码

set listsize count

 

设置 list默认显示的行数

disassemble

 

反汇编被调试程序

set disassembly-flavor instruction-set

 

设置反汇编格式

gdb调试

标签:

人气教程排行