gdb简单了解

file filename                         加载指定文件

list  <行号>|<函数名>          显示文件内容(源码)

break  fileName:lineNO      <条件>     设断点

break  fileName:funcName <条件>     设断点

info b                                              查断点

delete  n      删除指定断点或所有断点

step          单步恢复运行, 进入函数调用

next          单步恢复运行, 不进入函数调用

until    lineNO     运行直到进入指定等号

finsh         运行直到程序完成

c          继续运行, 直到完成或遇到断点

set args                          设置运行参数

show args      显示运行参数

pwd

cd dir

print/format <expr> <var> <func>

format是x,d,u,o,t,c,f,a(地址)

X/nfu addr

   addr是起始地址, n表示个数, f是是x,d,u,o,t,c,f,a(地址), u是单元b(字节),h(半字),w(字),g(双字)  

backtrace                      查函数调用栈(函数段错时)

watch  expr              有变化

rwatch expr    读

awatch expr            读或写

jump <linespec>     跳到指定行

return      强制返回

时间: 2024-08-09 21:45:19

gdb简单了解的相关文章

GDB简单使用

GDB简述一.程序中加入调试信息:gcc -g -o a.ddebu a.c二.启动gdb:gdb三.常用命令 1.backtrace:显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where). 2.breakpoint:在程序中设置一个断点 3.cd:改变当前工作目录. 4.clear:删除刚才停止处的断点. 5.commands:命中断点时,列出将要执行的命令. 6.continue:从断点开始继续执行. 7.delete:删除一个断点或监测点,也可与其他命令一起使用. 8.

GDB 程序调试简单实践

用了好久的GCC/G++ 却一直都没用过GDB调试过程序,有时程序不是很大,一般有错,直接看编译器编译结果就差不多知道错在哪儿了,或者使用codeblocks单步调试,甚至回到windows下面调试,但是总是不太方便,因此有必要看一下GDB调试方法和基本步骤. 下面是一个简单的演示: 首先创建一个有错误的代码,如下: 这个程序很简单,目的是接受用户的输入,并将用户的输入回应输出来. 但是这个程序的第17行有个错误,使用了未初始化的字符指针name,因此编译运行后会出现段错误,如下: 下面利用GD

GDB 调试器使用手冊

使用GDB: 本文描写叙述GDB,GNU的原代码调试器. (这是4.12版1994年一月.GDB版本号4.16) * 文件夹: * 摘要: GDB的摘要 * 实例: 一个使用实例 * 入门: 进入和退出GDB * 命令: GDB 的命令 * 运行: 在GDB下运行程序 * 停止: 暂停和继续运行 * 栈: 检查堆栈 * 原文件: 检查原文件 * 数据: 检查数据 * 语言: 用不同的语言来使用GDB * 符号: 检查符号表 * 更改: 更改运行 * GDB的文件 文件 * 对象 指定调试对象 *

gdb入门

GDB - 简单易上手的新人教程 https://blog.csdn.net/TheBeatles1994/article/details/81055418 博客很短,就不复制一遍了,这里记录一下gdb的命令: 原文地址:https://www.cnblogs.com/exciting/p/10952977.html

gdb调试多线程的简单命令

由于平时的编程当中经常会用到多线程,我想接触过多线程编程的人应该都会清楚多线程如果出了错,调起bug来是有多么麻烦,应为你某个地方出错了,有可能并不是这里的问题而是线程执行到这就切换到其他线程,而出错的是其他线程,我以前使用的办法是给某个线程sleep然后让内核自己调度去执行其他线程.很明显这种方法当有很多线程是并不是很使用,所以我就翻书学了几条调试多线程的简单gdb命令 1.测试所用的代码 1void *thread1(void *arg) 2{ 3 printf("New thread1\n

Linux 下GDB的使用之简单入门

Linux 下程序崩溃.先要生成Core文件方可调试(这里Test为被调试程序) 1.查看Core文件(相当于Windows下的dump)大小,如果为0,则不会生成core文件 ulimit -c 查看core文件大小 ulimit -c filesize 设置大小为filesize ulimit -c unlimited 设置core大小为无限制 2.启动被调试程序 进入到被调试程序目录,输入gdb ./Test  回车 如果被调试程序有参数需设置,则 set args xxxx 回车 3.设

简单gdb的使用

这些东西都是参考<Linux C编程一站式学习>,在看这本书的gdb这块的时候,把这些总结性的东西记录下来方便以后复习,这些东西吧其实在一年前就已经看过了的,但是缺少笔记总是记不住 命令 描述 backtrace(bt) 参考各级函数调用及参数的堆栈信息 finish 一般是配合step使用,当step跳入一个函数的时候,finish后执行到当前函数返回,然后停下来 frame(f) num(int) 选择栈帧 info(i)locals 变量名 查看当前栈帧局部变量的值 list(l) 列出

GDB调式工具的简单调试步骤

程序编译: gcc xx.c -o xx -g //一定要加-g 开始调式: gdb xx //进入调式界面 l:显示文件,默认10行main函数 l+函数名 //显示函数 b:插入断点 b + 行号(main函数) b + 文件名:行号 b + 函数名 r:运行程序 n:单步运行,不进入自定义函数 s:单步运行,进入自定义函数 c:继续执行到下一个断点,没有断点执行到程序结束 p:查看变量 p + i //查看变量i p + 表达式 //查看表达式的值

Makefile和gdb的简单使用

1.为什么要用Makefile进行多个.C文件的编译: (1).一般我们在进行项目开发的时候,会建立工程,下面有许多目录,不同目录下又有许多.C文件,这事就需要联合编译了. (2).我们自己手动编译的话,多个程序文件交织在一起,会出现不同文件资源之间的依赖与被依赖关系.那么在编译的时候就会出现问题:必须先解决被依赖项,在解决依赖项. 在这种情况下,我们进行手动编译的话,将会变得异常困难,首先我们必须记住依赖关系,才能知道编译顺序,其次每一次都要执行非常多的gcc编译命令才能完成最终的编译目标(g