gdb常用的调试命令
首先将源代码编译、链接生成debug版本的可执行文件,然后通过‘gdb debug版本的可执行文件名’进入调试模式。
a) 单进程、单线程基础调试命令
l 显示main函数所在的文件的源代码
list filename:num 显示filename文件num行上下的源代码
b linenum 给指定行添加断点
b funname 给指点函数的第一有效行添加一个断点
info break 显示断点信息
delete 断点号 删除指定断点
disable 断点号 将断点设定为无效的,
如果不加断点号,将所有断点设置为无效
enable 断点号 将断点设定为有效的
如果不加断点号,将所有断点设置为有效
r(run) 运行程序
n(next) 单步执行
c (continue) 继续执行,直接执行到下一个断点处
s 进入将要被调用的函数中执行
finish 跳出函数
q 退出调试
p val 打印变量val的值
p &val 打印变量val的地址
p a+b 打印表达式的值
p arr(数组名) 打印数组所有元素的值
p *parr@len 用指向数组的指针打印数组所有元素的值
x /nfu addr 打印addr表示的内存存储值
n : 是一个正整数,表示显示内存的长度
f : 表示显示的格式, x 十六进制; d 十进制; o 八进制
t 二进制; c 字符; f 浮点数
u: 表示从当前地址向后请求的字节数,默认4bytes,可以指定:
b 单字节 h 双字节 w 四字节 g 八字节
display 自动显示,参数和p命令一样
info display 显示自动显示信息
undisplay + 自动显示编号 删除指定的自动显示
ptype val 显示变量类型
bt 显示函数调用栈
b) 多进程调试命令
(gdb)set follow-fork-mode mode
mode 可以选择parent或者child,即:选择调试那个进程。
注意:未被选择的进程会直接执行结束。
c) 多线程调试命令
a) 利用info threads查看线程信息;
b) thread id 调试目标id指定的线程;
c) set scheduler-locking off | on | step;
“off”表示不锁定任何线程;
“on”只有当前被调试的线程继续运行;
"step"在单步执行的时候,只有当前线程会执行;
gdb常用的调试命令的更多相关文章
- 第03课:GDB常用的调试命令概览
先给出一个常用命令的列表,后面结合具体的例子详细介绍每个命令的用法. 命令名称 命令缩写 命令说明 run r 运行一个程序 continue c 让暂停的程序继续运行 next n 运行到下 ...
- 第三课:GDB 常用的调试命令概览
先给出一个常用命令的列表,后面会结合具体的例子详细介绍每个命令的用法. 命令名称 命令缩写 命令说明 run r 运行一个程序 continue c 让暂停的程序继续运行 next n 运行到下一行 ...
- gdb对应vc调试命令
gdb vc调试对照表: 实现功能 vc gdb 修改后编译 f7 ma ...
- gdb常用命令及使用gdb调试多进程多线程程序
一.常用普通调试命令 1.简单介绍GDB 介绍: gdb是Linux环境下的代码调试⼯具.使⽤:需要在源代码⽣成的时候加上 -g 选项.开始使⽤: gdb binFile退出: ctrl + d 或 ...
- gdb常用命令及gdb调试多进程/线程程序&coredump
一.常用普通调试命令 1.简单介绍GDB 介绍: gdb是Linux环境下的代码调试⼯具.使⽤:需要在源代码⽣成的时候加上 -g 选项.开始使⽤: gdb binFile退出: ctrl + d 或 ...
- C 调试 gdb常用命令
gdb常用命令: [root@redhat home]#gdb 调试文件:启动gdb (gdb) l :(字母l)从第一行开始列出源码 (gdb) break n :在第n行处设置断点 (gdb) b ...
- 【转】 GDB 常用调试方法
一.多线程调试 多线程调试可能是问得最多的.其实,重要就是下面几个命令: info thread 查看当前进程的线程. thread <ID> 切换调试的线程为指定ID的线程. break ...
- lldb调试命令
XCode4.0以后,编译器换成了LLVM 编译器 2.0 与以前相比,更加强大:1.LLVM 编译器是下一带开源的编译技术.完全支持C, Objective-C, 和 C++.2.LLVM 速度比 ...
- 基础调试命令 - .dump/.dumpcap/.writemem/!runaway
Windbg是windows平台上强大的调试器,它相对于其他常见的IDE集成的调试器有几个重要的优势, Windbg可以做内核态调试 Windbg可以脱离源代码进行调试 Windbg可以用来分析dum ...
随机推荐
- js大数计算之展示
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 使用HTML CSS制作简易三角形和旗帜
HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- BeginInvoke异步线程
this.BeginInvoke(new Action(() => { dataGridView1.DataSource = BLLBillConsume.BllGetClearMarketLo ...
- ASE19团队项目 beta阶段 model组 scrum7 记录
本次会议于12月10日,19时30分在微软北京西二号楼sky garden召开,持续10分钟. 与会人员:Jiyan He, Lei Chai, Linfeng Qi, Xueqing Wu, Kun ...
- Java流对象:InputStream、OutputStream、Reader、Writer
流对象使用完一般要用close方法关闭.释放资源. InputStream 和OutPutStream 二者都是字节输入和输出的抽象父类,子字节为单位处理数据,每次读取.写入一个字节,适合处理二进制文 ...
- 转:IDEA中如何使用debug调试项目 一步一步详细教程
原文链接:http://www.yxlzone.top/show_blog_details_by_id?id=2bf6fd4688e44a7eb560f8db233ef5f7 在现在的开发中,我们经常 ...
- 参数化查询防止Sql注入
拼接sql语句会造成sql注入,注入演示 namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() ...
- 共用dll如何扩展
今天需要对一个多个项目共用的dll进行扩展.发现很难搞,然后老大告诉我共享的dll有一个属性指向各个平台自己的类型,这个类型是暴露在各个平台自己项目中的. 然后直接对这个属性进行扩展就行了,这个属性是 ...
- python3 准备
一.前言 1.Python是著名的“龟叔”Guido van Rossum发明的 2.python分为python2和python3两大版本,python2渐渐被淘汰,建议使用python3 3.py ...
- ndk学习之C语言基础复习----虚拟内存布局与malloc申请
在这一次中来学习一下C语言的内存布局,了解它之后就可以解释为啥在用malloc()申请的内存之后需要用memset()来对内存进行一下初始化了,首先来了解一下物理内存与虚拟内存: 物理内存:通过物理内 ...