gdb调试工具常用命令】的更多相关文章

一.前言 ACM开赛在即,得知dev-cpp不适用之后,不得不再次重拾gdb基本操作... 辗转Emacs和Code::blocks数次之后,感觉还是Emacs更适合我的风格,尽管配置稍显麻烦,但其开放性不是其他ide可比的. 二.正文 TIPS:对于任一命令,如果标有斜杠/,例如run/r,则前面表示全称,后面表示简写,两者均可以被执行,一般为了方便会选择简写. 1.主体 (gdb)help x:查看命令帮助(x可省表示查看全部,也可以是命令名称,表示查看某一具体命令的帮助): (gdb)ru…
编译程序时需要加上-g,之后才能用gdb进行调试:gcc -g main.c -o main gdb中命令: 回车键:重复上一命令 (gdb)help:查看命令帮助,具体命令查询在gdb中输入help + 命令,简写h (gdb)run:重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件),简写r (gdb)start:单步执行,运行程序,停在第一执行语句 (gdb)list:查看原代码(list-n,从第n行开始查看代码.list+ 函数名:查看具体函数),简写l…
编译程序时需要加上-g,之后才能用gdb进行调试:gcc -g main.c -o main gdb中命令: 回车键:重复上一命令 (gdb)help:查看命令帮助,具体命令查询在gdb中输入help + 命令,简写h (gdb)run:重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件),简写r (gdb)start:单步执行,运行程序,停在第一执行语句 (gdb)list:查看原代码(list-n,从第n行开始查看代码.list+ 函数名:查看具体函数),简写l…
gdb 调试常用命令 gcc -g mian.c -o main.out -o (定制生成的可执行文件的名称,缺省时为a.out) -g 使gdb可调试,在编译的时候,产生调试信息 gdb main.out (进入gdb调试环境),调试可执行文件main.out   list(l) 显示当前行之后的10行代码(list后面可接行号和函数名,回车继续向下显示) 回车 直接回车,重复上一次执行的命令 start(s) 开始执行程序,并停在main函数的第一条语句处 next(n) 执行下一条语句 s…
Bash 目录 pwd  //查看当前目录 mkdir dir1 dir2  //创建目录 tree dir1 mv test1.cpp test2.cpp dir1 dir  //移动文件/目录到目录dir rm -r dir         删除目录 cp -r dir1 dir2 复制目录 文件信息 ll –t //列出详细信息,按时间排序 ls -R(ecursive) 目录树 -l 详细信息 -t 时间排序 -S 大小排序 -X 扩展名排序 -r(everse) 逆序 –h(uman)…
以redhat6.5虚拟机作为例子,由于工作性质,大部分情况linux的软件安装,是采用离线方式的. 1.离线安装gdb 像gcc.g++或者gdb这种常用的工具软件,一般虚拟机都会安装的,如未安装,则去镜像文件中找,一般都有. 1.1 找到并选定镜像文件 虚拟机->设置->CD/DVD->勾选“已连接”+“启动时连接”->使用ISO镜像->“选择镜像文件xxx.iso” 1.2 在终端下操作安装 (懒得挂载,直接到/medium下找文件内容,当然也可以去挂载): cd /m…
定断点b line.会返回一个断点号(breakpoint-no). 输出p val.可以夹杂类型装换.解引用. 遇到断点自动执行命令commands breakpoint-no. 停止执行s. 退出GDBq.…
1.在xv6 内核中 通过 nm kernel | grep _start 找到kernel的起始地址是0010000c 8010b50c D _binary_entryother_start 8010b4e0 D _binary_initcode_start 0010000c T _start 2. br * 0x0010000c 设置断点,(如果在函数start处设断点就是 br start) 3.c 继续执行到这个断点 4.查看寄存器,找到通过esp找到程序在内存中的地址 info reg…
strace和gdb是Linux环境下的两个常用调试工具,这里是个人在使用过程中对这两个工具常用参数的总结,留作日后查看使用. strace调试工具 strace工具用于跟踪进程执行时的系统调用和所接收的信号,包括参数.返回值.执行时间.在Linux中,用户程序要访问系统设备,必须由用户态切换到内核态,这是通过系统调用发起并完成的. strace常用参数: -c 统计每种系统调用执行的时间.调用次数.出错次数,程序退出时给出报告 -p pid 跟踪指定的进程,可以使用多个-p同时跟踪多个进程 -…
本文由霸气的菠萝原创,转载请注明出处:http://www.cnblogs.com/xsln/p/gdb_instructions1.html 全部关于gdb的文章索引请点这里 GDB(GNU Debugger)是在Unix以及类Unix系统下的调试工具.功能极其强大,几乎涵盖了你所需要的全部功能. GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的定制要求随心所欲的运行程序. 2.可让被调试的程序在你所指定的调置的断点处停住. 3.当程序被停住时,可以检查此时你的程序中所…
gdb thread apply all bt 如果你发现有那么几个栈停在 pthread_wait 或者类似调用上,大致就可以得出结论:就是它们几个儿女情长,耽误了整个进程. 注意gdb的版本要高于7.0,之前使用过gdb6.3调试多线程是不行的. 从上图可以看出两个线程都阻塞在wait上,而且还给出了在哪一行代码中,很容易就定位到产生死锁的位置. 有时候线程太多,想写到文件里,可以: (gdb)set logging file <文件名> (gdb)set logging on (gdb)…
Linux GDB 常用命令如下: 1.启动和退出gdb (1)启动:gdb ***:显示一段版权说明: (*** 表示可执行程序名) (2)退出:quit.有的时候输入quit后会出现相关提示:类似于“(y/n)”,输入y 2.显示和查找程序源代码 (1)list :显示10行代码,但是我为什么没有显示成功呢? (2)list 5,10:显示源文件第五行到第十行的代码 (3)list t4.c:5,10:显示源文件中第五行到第十行的代码,在跳是含有多个源文件的次序时使用: (4)list ge…
gdb常用命令 最近在研究nginx源码,gdb用于调试非常方便,之前这篇有研究过如何使用gdb调试nginx:https://www.cnblogs.com/yjf512/archive/2012/05/10/2494635.html 最近使用的时候gdb的命令又忘记了.这里复习一下. 这里有很全的资料:https://www.gitbook.com/book/wizardforcel/100-gdb-tips 常用命令 启动项目并断点 start 打临时断点 tb 打断点 b 列出代码 l…
为了调试我的指针LCT--我学会了如何使用gdb! 粘一个常用命令表(原文地址:https://blog.csdn.net/tzshlyt/article/details/53668885) gcc -g main.c //在目标文件加入源代码的信息 gdb a.out (gdb) start //开始调试 (gdb) n //一条一条执行 (gdb) step/s //执行下一条,如果函数进入函数 (gdb) backtrace/bt //查看函数调用栈帧 (gdb) info/i local…
本文由霸气的菠萝原创,转载请注明出处:http://www.cnblogs.com/xsln/p/gdb_instructions.html 本文为索引,请点击以下链接进行阅读: GDB调试原理——ptrace系统调用 GDB常用命令说明(一) GDB常用命令说明(二)…
一.gdb常用的命令 list                       l    常看源代码 break                  b    设置断点     b  10(行号)    b  fun(设置函数名)   b  9(行号)  if  条件(i==10) info  b                 查看断点个数 delete                d   删除断点   1(第几个断点)      d(删除所有断点) run                   …
格式说明: [xxx]:可选参数,即可以指定可以不指定,实际输入的内容是 xxx <xxx>:占位参数,即必须指定的参数,实际输入的内容是 xxx gdb 常用命令: gdb [file]:进入 gdb 调试环境 / 进入 gdb 调试环境,并加载被调试被调试文件 file file <file>:加载被调试文件 file r [运行时参数]:r=run,运行被调试程序.如果没有设置断点,则运行完整个程序,如果有断点,运行到第一个断点处 start:开始调试,停在第一行代码处 l…
本课的核心内容如下: run命令 continue命令 break命令 backtrace与frame命令 info break.enable.disable和delete命令 list命令 print和ptype命令 为了结合实践,这里以调试Redis源码为例来介绍没一个命令,这里先介绍一些常用命令的基础用法,某些命令的高级用法会在后面讲解. Redis的最新源码下载地址可以在Redis官网(Redis中文网)获得,使用wget命令将Redis源码文件下载下来: 解压:tar zxvf red…
gdb常用命令: [root@redhat home]#gdb 调试文件:启动gdb (gdb) l :(字母l)从第一行开始列出源码 (gdb) break n :在第n行处设置断点 (gdb) break func:在函数func()的入口处设置断点 (gdb) info break: 查看断点信息 (gdb) r:运行程序 (gdb) n:单步执行 (gdb) c:继续运行 (gdb) p 变量 :打印变量的值 (gdb) bt:查看函数堆栈 (gdb) finish:退出函数 (gdb)…
本课的核心内容: disassemble 命令 set args 和 show args 命令 tbreak 命令 watch 命令 display 命令 disassemble 命令 当进行一些高级调试时,我们可能需要查看某段代码的汇编指令去排查问题,或者是在调试一些没有调试信息的发布版程序时,也只能通过反汇编代码去定位问题,那么 disassemble 命令就派上用场了. initServer () at server.c:1839 1839        createSharedObjec…
本课的核心内容如下: run 命令 continue 命令 break 命令 backtrace 与 frame 命令 info break.enable.disable 和 delete 命令 list 命令 print 和 ptype 命令 为了结合实践,这里以调试 Redis 源码为例来介绍每一个命令,先介绍一些常用命令的基础用法,某些命令的高级用法会在后面讲解. Redis 源码下载与 debug 版本编译 Redis 的最新源码下载地址可以在 Redis 官网获得,使用 wget 命令…
  1.生成core dump文件的方法: $  ulimit -c //查看是否为0 如果为0 $   ulimit -c unlimited 这样在程序崩溃以后会在当前目录生成一个core.xxxx的文件 2.调试core dump文件 生成了core.xxx文件以后 $  gdb ./应用程序  core.xxxx 就会恢复现场到你的程序崩溃的那一刻 (gdb)bt          //这个命令会列出程序崩溃时的堆栈信息,一层一层会有标号  #0  #1  #2 ....... 如果你要…
1.生成core dump文件的方法: $  ulimit -c //查看是否为0 如果为0 $   ulimit -c unlimited 这样在程序崩溃以后会在当前目录生成一个core.xxxx的文件 2.调试core dump文件 生成了core.xxx文件以后 $  gdb ./应用程序  core.xxxx 就会恢复现场到你的程序崩溃的那一刻 (gdb)bt          //这个命令会列出程序崩溃时的堆栈信息,一层一层会有标号  #0  #1  #2 ....... 如果你要查看…
首先说明一点,如果我们要使用GDB来调试我们的C/C++程序时,在使用GCC编译程序时,应该带上 –g 参数, 它负责生成 与GDB相关的调试信息: 1.如何对一个文件启动GDB调试? 方法一: 命令行输入:  gdb filename 方法二: 命令行输入: gdb                 , 进行gdb工作界面以后,再输入命令: file filename             ,其中file为gdb的一个命令: 2. 常见的GDB命令: 命令 解释 示例 file <文件名>…
pwn常常会用到gdb,看到一篇不错的文章,记录了很多命令:https://www.jianshu.com/p/c3e5f5972b21 gdb 基础调试命令 s step,si步入 n 执行下一条指令 ni步入 b 在某处下断点,可以用 b * adrress b function_name info b 查看断点信息 delete 删除所有断点 c 继续 r 执行 disas addr 查看addr处前后的反汇编代码 disas functions 参看fucntion函数的反汇编代码 显示…
到目前为止我们的调试手段只有一种: 根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入printf,执行程序并分析打印结果,如果结果和预期的一样,就基本上证明了自己假设的错误原因,就可以动手修正Bug了. 如果结果和预期的不一样,就根据结果做进一步的假设和分析. 这里,我们介绍一种很强大的调试工具gdb,可以完全操控程序的运行,使得程序就像你手里的玩具一样,叫它走就走,叫它停就停,并且随时可以查看程序中所有的内部状态,比如各变量的值.传给函数的参数.当前执行的代码行等. 有了gdb…
假如现在我们有如下代码需要编译运行和调试.文件名为:test.c #include <stdio.h> int main() { int day, month, year, sum, leap; printf("input year month day:\n"); scanf("%d%d%d",&year,&month,&day); switch(month) { case 1: sum = 0; break; case 2: s…
从windows转到linux下已经有一段时间了,每次刷算法题碰到问题需要调试的时候,就分分钟想关机,切换到windows上调试.于是,花了一点时间来搜索一下linux下常见的调试工具,这不搜不知道,一搜吓一跳,居然差点错过了这么好的调试利器GDB.上手十分简单,几分钟就可以开开心心调试你的代码了. GDB概述 GDB是一个由GNU开源组织发布的.UNIX/LINUX操作系统下的.基于命令行的.功能强大的程序调试工具.相比于VS里面的图形化调试工具,其功能更加强大. GDB安装 在终端下运行如下…
程序调试的基本思想是“分析现象->假设错误原因->产生新的现象去验证假设”这样一个循环过程,根据现象如何假设错误原因,以及如何设计新的现象去验证假设,需要非常严密的分析和思考.程序中除了一目了然的Bug之外都需要一定的调试手段来分析到底错在哪,到目前为止自己使用过的调试手段只有一种: 根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入printf(驱动使用printk函数),执行程序并分析打印结果,如果结果和心里预期的一样,就基本上证明了自己假设的错误原因,就可以动手修正Bug了…
gdb调试工具 gcc -g main.c -o main 常用命令 命令            简写         作用 help                h            按模块列出命令类 help class                    查找某一类型的具体命令 list                l             查看代码,可跟行号和函数名 list -             l              网上查看代码 quit          …