gdb调试小结

一、启动调试

测试程序

  1 #include<iostream>
  2 using namespace std;
  3 class AA
  4 {
  5     void f(){}
  6 };
  7 int main()
  8 {
  9     cout<<sizeof(AA)<<endl;
 10     AA a;
 11     cout<<sizeof(a);
 12     return 0;
 13 }

g++/gcc 命令加-g表示使用了gdb调试:

file+生成的可执行文件(test):导入调试文件

二、常用调试命令(断点调试)

r 开始执行(run),如果有断点则直至第一个断点(break)

b 设置断点

b num(行号)

b function(函数名)

tb 断点位置 设置临时断点(只生效一次)

i b 检查断点信息

b 断点位置 if 条件  设置条件断点

ignore bnum count 表示接下来的count编号为bnum的断点忽略。

d 断点编号 删除断点(delete)

c 断点之后继续执行到下一个断点(continue)

n 单步运行(next)

s 进入函数(step)

finish 执行至退出函数

start 停留在main函数的第一条语句

p 参数 打印参数信息

info 文件/函数 文件/函数信息

三 、设置观察点

修改了一下测试文件

  1 #include<iostream>
  2 using namespace std;
  3 class AA
  4 {
  5     void f(){}
  6 };
  7 int main()
  8 {
  9     int b=1;
 10     for(int i=1;i<10;i++)
 11         b++;
 12     cout<<sizeof(AA)<<endl;
 13     AA a;
 14     cout<<sizeof(a);
 15     return 0;
 16 }

watch 观察点 (遇到变量值变化,程序就会停下来)

i watch 查看观察点

d 序号 删除观察点

四、退出

q

时间: 2024-10-03 09:30:09

gdb调试小结的相关文章

GDB调试命令小结

1.启动调试 前置条件:编译生成执行码时带上 -g,如果使用Makefile,通过给CFLAGS指定-g选项,否则调试时没有符号信息.gdb program //最常用的用gdb启动程序,开始调试的方式gdb program core //用gdb查看core dump文件,跟踪程序core的原因gdb program pid //用gdb调试已经开始运行的程序,指定pid即可gdb attach pid //用gdb调试已经开始运行的程序,指定pid即可 2.调试命令(1)执行命令模式-bat

使用 GDB 调试多进程程序

GDB 是 linux 系统上常用的调试工具,本文介绍了使用 GDB 调试多进程程序的几种方法,并对各种方法进行比较. 3 评论 田 强 ([email protected]), 软件工程师, IBM中国软件开发中心 2007 年 7 月 30 日 内容 在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强大.对于较为复杂的系统,比如多进程系统,如何使用 GDB 调试呢?考虑下面这个三进程系统: 进程

GDB Core,gdb 调试大全,core文件调试

编译: gcc -g -o hello hello.c gdb 调试: 基本 gdb 命令. 命 令 描 述 小结:常用的gdb命令 backtrace 显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where) breakpoint 在程序中设置一个断点 cd 改变当前工作目录 clear 删除刚才停止处的断点 commands 命中断点时,列出将要执行的命令 continue 从断点开始继续执行 delete 删除一个断点或监测点:也可与其他命令一起使用 display 程序停

PCIE hotplug 调试小结

PCIE 卡的热插拔调试小结 PCI Hot plug的规范虽然早在二十世纪末就出现,但并没有规定统一的实现方式.当需要把PCIE卡换到其他槽位,或者替换有故障的卡时,PCIE卡热插拔的特性能够避免服务器宕机,改善用户使用体验.但时至今日,并非所有的服务器都支持PCIE卡热插拔.本人就有幸碰到这种服务器,最近就在为它增加hotplug的支持. 我的任务是解决上电后PCIE不能LinkRe-train 成功的问题,调试过程中发现一个让人百思不得其解的问题:我的shell脚本运行得跟期望的一样,能够

C++ gdb调试

cmake和gdb调试程序 由于出发点是想要在cmake后使用gdb,因此先写一下cmake和gdb的简单的一个流程,此部分转自:WELEN 1.  cmake支持gdb的实现,首先在CMakeLists.txt下加入SET(CMAKE_BUILD_TYPE "Debug") 在下面加入:SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")SET(CMAKE_CXX_FLAGS_RELEASE

【手册】GDB调试指令

1.列出源程序 (gdb) l(list) <line> //列出(line-5)行到(line-1+5)行间的内容 (gdb) l(list) <line1,line2> //列出(line1)行到(line2)行间的内容 2.运行程序 (gdb) r(run) <arg1,arg2,...,argn> //若"不列出参数",则使用"上次输入参数" (gdb) show args //查看当前使用"参数" (

使用gdb调试c++程序

上篇(使用c++开发跨平台程序)说到,我不怕造东西,我怕的是造出来的东西,如果出了问题,我却不知道原因.所以调试分析是一个重要的手段. C++调试是一个复杂的活.虽然大部分调试可以通过IDE在开发期间就解决了.但是必然的,还有很多东西需要在生产环境中还原它.分析它,然后解决它.gdb是一个成熟的工具.围绕着它有很多的工具可以选择.不过这么多工具的根本还是命令行模式下的gdb. 废话不多说,现在我就用gdb来分析调试一下吧. 生成dump文件: 在shell中输入命令: ulimit -c unl

gdb调试

[前言]使用gdb调试前,在编译程序时,要加 -g 选项,否则你将看不见程序的函数名.变量名,所代替的全是运行时的内存地址. 1.开始调试 a.  gdb <program> program也就是你的执行文件,一般在当前目录下. b. gdb <program> core 用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件. 2.[列出源码],从第n行开始(编译时要加 -g 选项) l n 3.[设置断点]在第N行加断点 break

gdb调试命令

本篇摘自互联网,纯属自己学习笔记,然分享给看到我的博客的人们. 用GDB调试程序 GDB是一个强大的命令行调试工具.大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本.UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能. 于是UNIX下的软件比Windows下的软件更能有机地结合,各自发挥各自的长处,组合成更为强劲的功能.而Windows下的图形软件基本上是各自为营,