GDB调试——常用命令
命令 | 解释 | 示例 |
file <文件名> |
加载被调试的可执行程序文件。 因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。 |
(gdb) file gdb-sample |
r |
Run的简写,运行被调试的程序。 如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。 |
(gdb) r |
c | Continue的简写,继续执行被调试程序,直至下一个断点或程序结束。 | (gdb) c |
b <行号> b <函数名称> b *<函数名称> b *<代码地址> d [编号] |
b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。 其中在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”。如果不了解汇编,可以不予理会此用法。 d: Delete breakpoint的简写,删除指定编号的某个断点,或删除所有断点。断点编号从1开始递增。 |
(gdb) b 8 (gdb) b main (gdb) b *main (gdb) b *0x804835c (gdb) d |
s, n |
s: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数; n: 执行一行源程序代码,此行代码中的函数调用也一并执行。 s 相当于其它调试器中的“Step Into (单步跟踪进入)”; 这两个命令必须在有源代码调试信息的情况下才可以使用(GCC编译时使用“-g”参数)。 |
(gdb) s (gdb) n |
si, ni | si命令类似于s命令,ni命令类似于n命令。所不同的是,这两个命令(si/ni)所针对的是汇编指令,而s/n针对的是源代码。 |
(gdb) si (gdb) ni |
p <变量名称> | Print的简写,显示指定变量(临时变量或全局变量)的值。 |
(gdb) p i (gdb) p nGlobalVar |
display ...
undisplay <编号> |
display,设置程序中断后欲显示的数据及其格式。 例如,如果希望每次程序中断后可以看到即将被执行的下一条汇编指令,可以使用命令 “display /i $pc” 其中 $pc 代表当前汇编指令,/i 表示以十六进行显示。当需要关心汇编代码时,此命令相当有用。 undispaly,取消先前的display设置,编号从1开始递增。 |
(gdb) display /i $pc
(gdb) undisplay 1 |
i | Info的简写,用于显示各类信息,详情请查阅“help i”。 | (gdb) i r |
q | Quit的简写,退出GDB调试环境。 | (gdb) q |
help [命令名称] |
GDB帮助命令,提供对GDB名种命令的解释说明。 如果指定了“命令名称”参数,则显示该命令的详细说明;如果没有指定参数,则分类显示所有GDB命令,供用户进一步浏览和查询。 |
(gdb) help display |
命令 | 描述 |
---|---|
backtrace(或bt) | 查看各级函数调用及参数 |
finish | 连续运行到当前函数返回为止,然后停下来等待命令 |
frame(或f) 帧编号 | 选择栈帧 |
info(或i) locals | 查看当前栈帧局部变量的值 |
list(或l) | 列出源代码,接着上次的位置往下列,每次列10行 |
list 行号 | 列出从第几行开始的源代码 |
list 函数名 | 列出某个函数的源代码 |
next(或n) | 执行下一行语句 |
print(或p) | 打印表达式的值,通过表达式可以修改变量的值或者调用函数 |
quit(或q) |
退出gdb 调试环境
|
set var | 修改变量的值 |
start |
开始执行程序,停在main 函数第一行语句前面等待命令
|
step(或s) | 执行下一行语句,如果有函数调用则进入到函数中 |
转载于:https://www.cnblogs.com/dk666/p/7576921.html
GDB调试——常用命令相关推荐
- gdb调试常用命令速查(段错误调试)
编译程序时需要加上-g,之后才能用gdb进行调试:gcc -g main.c -o main gdb中命令: 回车键:重复上一命令 (gdb)help:查看命令帮助,具体命令查询在gdb中输入help ...
- gdb 不能显示变量_linux下gdb调试常用命令汇总
1.对于一个.c文件需要在编译时加上-g生成的.out文件才能使用gdb进行编译,如下图所示 2.使用gdb XX文件进入gdb调试 3.使用start开始进行调试,初始只有一个断点在main函数,可 ...
- 调试多线程 查死锁的bug gcore命令 gdb对多线程的调试 gcore pstack 调试常用命令...
gdb thread apply all bt 如果你发现有那么几个栈停在 pthread_wait 或者类似调用上,大致就可以得出结论:就是它们几个儿女情长,耽误了整个进程. 注意gdb的版本要高于 ...
- Linux后台开发系列之「08.15 个 gdb 调试基础命令」
代码键盘 版权声明:本文为 cdeveloper 原创文章,可以随意转载,但必须在明确位置注明出处! gdb 简介 gdb 是 UNIX 及 UNIX-like 下的调试工具,在 Linux 下一般都 ...
- linux之gdb调试常用100个技巧
linux之gdb调试常用100个技巧 https://gitlore.com/page/gitlore-git/gdb_tips/index.html 如果不懂linux gdb调试的 看下这篇文章 ...
- Windows下 网络调试常用命令
网络调试常用命令 Windows提供了一组实用程序来实现简单的网络配置和管理功能,这些实用程序通常以Dos命令的形式出现.用键盘命令来显示和改变网络配置,感觉像直接操纵硬件一样,不但简单方便,而且效果 ...
- GDB多线程调试常用命令
gdb调试命令 step和next的区别? 当前line有函数调用的时候,next会直接执行到下一句 ,step会进入函数. 查看内存 (gdb)p &a //打印变量地址 gdb)x 0xb ...
- gdb调试器命令(zz)
[url]http://blog.iyi.cn/hily/archives/2006/05/post_12.html[/url] Linux中包含有一个很有用的调试工具--gdb(GNU Debuge ...
- gdb调试常用概念整理
GDB 调试模型 主要又两种调试模型:代码调试跟踪与优化(一)--- 如何用GDB 调试代码?_流云IoT的博客-CSDN博客 本地调试:调试程序和被调试程序运行在同一台电脑中. 远程调试:调试程序运 ...
最新文章
- 管理者如何管理好有一个团队?
- 《ADO.NET 2.0高级程序设计》读书随笔(1)使用连接池connection pool
- 泊松分布E(X^2)
- arm linux gnueabi编译,交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别
- Tomcat学习笔记02【Tomcat部署项目】
- 写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示。(单词之间用空格隔开,如“Hello World My First Unit Test”);...
- 一个“程序员的自我修养”是什么?
- mysql编译和yum安装哪个好_Centos7下PHP源码编译和通过yum安装的区别和以后的选择...
- 工程之道 | CPU推理性能提高数十倍,MegEngine计算图、MatMul优化解析
- python time
- 走进双亲委派机制LoadClass
- Ghost命令使用方法
- 数仓 调度_【数仓开发-数仓概念篇】3.3 报表vs数据可视化vs ETL
- win版跳过id锁工具_实测:一键跳过苹果锁,免费
- java print argc_【转】main 函数参数 argc argv env 与命令行
- Mindjet MindManager 2018 版本下载
- laravel Eloquent小技巧
- 使用RT-Thread Studio DIY 迷你桌面时钟(一)| 基于STM32芯片创建HelloWorld工程
- 【特征】PSI的计算
- 挑出区域内每一行最小值,并标记颜色
热门文章
- apereo cas mysql_Apereo CAS 5.0.X 默认提供的数据库认证的四种方式
- java中label数值_java – 如何在JLabel中显示变量值
- conda deactivate python3_python3的配置解决
- ipa文件怎么安装到iphone_无视签名随意安装 IPA 文件
- python3 yield 大文件_详解Python3中yield生成器的用法
- netty依赖_高性能:《一遍文章带你看懂 Netty世界》
- 【SSL】keytool复制证书
- 天津盈克斯机器人科技_柔性视觉选料 机器人摆盘 柔性振动盘
- vue中的props对象
- java迷宫队列实现_Creator 迷宫生成: DFS 与 BFS 算法实现