C/C++调试工具gdb】的更多相关文章

应用程序调试工具gdb学习使用 一.GDB简介 GDB 是 GNU 发布的一款功能强大的程序调试工具.GDB 主要完成下面三个方面的功能: 1.启动被调试程序. 2.让被调试的程序在指定的位置停住. 3.当程序被停住时,可以检查程序状态(如变量值). 1.1gdb使用流程 1.编译生成可执行文件: gcc –g tst.c -o tst2.启动 GDB gdb tst(文件名)3. 在 main 函数处设置断点 break main4. 运行程序 run5. 利用更加丰富的 gdb 命令对程序进…
C实战:强大的程序调试工具GDB 1.基本调试 这里只列举最最常用的GDB命令. 1.1 启动GDB gdb program:准备调试程序.也可以直接进入gdb,再通过file命令加载. 1.2 添加断点 b function:为函数设置断点.b是break的缩写,除了函数名,还可以是地址.当前执行处的+/-偏移等. 1.3 运行程序 run args:开始运行程序,run后面可以加程序需要的参数,就像在命令行正常运行时那样. 1.4 单步调试 s/n/si/c/kill:s即step in,进…
1 简介 2 生成调试信息 3 启动GDB 的方法 4 程序运行上下文 4.1 程序运行参数 4.2 工作目录 4.3 程序的输入输出 5 设置断点 5.1 简单断点 5.2 多文件设置断点 5.3 查询所有断点 6 观察点 7 条件断点 8 维护停止点 9 为停止点设定运行命令 10 调试代码 11 查看运行时数据 12 程序变量 13 自动显示 14 历史记录 15 改变程序的执行 15.1 修改变量值 15.2 跳转执行 15.3 产生信号量 15.4 强制函数返回 15.5 强制调用函数…
1.1 gdb符号调试器简介 gdb是一个用来调试C和C++程序的功能强大的调试器,它能在程序运行时观察程序的内部结构和内存的使用情况. gdb主要提供以下几种功能: 监视程序中变量值的变化 设置断点,使程序在指定的代码行上暂停执行,便于观察 单步执行代码 分析崩溃程序产生的core文件 gdb filename(执行文件名) 编译时需加上-g 或 -ggdb3 选项 1.2 gdb功能详解及其应用 1.2.1调试步骤 1.调用gdb gdb filename 2.设置断点并调试 break f…
xcode 5 好像弃用了GDB .而默认使用苹果自己开发的调试工具 LLDB. http://iosre.com/forum.php?mod=viewthread&tid=52    LLDB http://www.devdiv.com/lldb_message_sent_to_deallocated_instance_-blog-50901-50856.html //LLDB 调试 http://blog.sina.com.cn/s/blog_489ab04e0100wj3x.html   …
1.GDB调试器概述 GDB是GNU开源组织发布的一个强大的程序调试工具,具有查看程序运行状态.设置断点.查看表达式.显示变量等众多功能,是程序员进行Linux编程必须要掌握的一种调试技术. GDB调试工具的优势主要包含以下5个方面: (1)用户可以在程序运行过程中查看运行的状态: (2)用户可以在程序中任何需要的地方设置断点,并暂停程序的执行: (3)当程序暂停时,用户可以随时查看程序中各表达式.变量值以及内存值: (4)程序暂停时用户可以进行单步调试,依此检查程序每步运行的结果是否跟预测值一…
类UNIX下C/C++开发,代码调试比较麻烦,最原始的加跟踪调试很土,也很费时,特别是一个庞大的项目,代码行数非常大的时候调试起来非常费劲,当core dump时定位也不容易,这里介绍几个常用工具: gdb.dbx调试工具,valgrind内存检查工具(Linux) . gdb(GNU DeBugger)是GNU的调试器,一般和gcc配搭使用.要使用GDB进行调试,编译程序时要指定-g或-ggdb的编译选项.如: gcc –g main.c gdb指令:f(file):指定可执行文件,l(lis…
关于Gdb的使用,请参考:http://blog.csdn.net/haoel/article/details/2879…
1.编译源代码 C:MinGW\bin>gcc.exe -g -o program.exe program.c 编译选项上要加上“g”,这样生成的目标程序会含有调试内容,再用gdb调试的时候才能使用.显然加上“g”选项生成的应用程序会比不加的大,但两者运行时没有差别. 2.启动调试 C:MinGW\bin>gdb.exe program.exe 3.设置断点并启动运行 (gdb)break main(gdb)start 不能直接start,因为程序运行太快了,直接start就运行到程序停止的地…
编译 gcc  -g  xxx.c  -o xxxgdb gdb  xxxgdb 进入gdb调试界面 查看代码 list   ==>  l 设置断点   可以以函数为断点 /  行数 break    function/lines 查看断点 info    breakpoints 执行代码 run  ==> 也可以直接输入 r start ==> 也可以直接输入s 单步调试 下一步 next  ==>也可以直接输入 n 执行到下一个断点 continue ==> 也可以直接输…
strace和gdb是Linux环境下的两个常用调试工具,这里是个人在使用过程中对这两个工具常用参数的总结,留作日后查看使用. strace调试工具 strace工具用于跟踪进程执行时的系统调用和所接收的信号,包括参数.返回值.执行时间.在Linux中,用户程序要访问系统设备,必须由用户态切换到内核态,这是通过系统调用发起并完成的. strace常用参数: -c 统计每种系统调用执行的时间.调用次数.出错次数,程序退出时给出报告 -p pid 跟踪指定的进程,可以使用多个-p同时跟踪多个进程 -…
GDB它是GNU Debuger缩写,它是GNU发表了unix通过应用程序调试工具. 它被广泛应用于在各种各种生产内部应用.GDB和所有的调试工具经常使用相同的,其主要特点是:监视变量的值.设置断点及单步运行. 注意,在源程序编译时.要使用gcc -g 或 cc -g 或 g++ -g将源程序编译成可运行文件,然后才干使用gdb进行调试. 仅仅有这样,生成的可运行文件才包括调试信息. 參考别人的写一个简单的c程序,在linux下使用gcc编译成可运行文件,然后使用gdb进行调试. 程序源码例如以…
编写 UNIX® 系统程序充满乐趣,并且具有教育意义.使用 UNIX strace 工具和 GDB(GNU 项目调试工具),您可以真正地深入研究系统的功能,并了解组成这些功能的各种各样的程序.同时使用这两种工具,能够在查看 UNIX 计算机底层信息 的时候,给您带来更好的体验. UNIX 家族总是为用户提供了丰富的工具.UNIX 是一个工具财宝箱,有了这些工具,您不仅可以完成具有创造性的工作,还可以在深入研究该操作系统的同时得到教育和娱乐.strace(用来跟踪任何程序的系统调用)和 GDB 调…
到目前为止我们的调试手段只有一种: 根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入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…
GDB程序调试工具 GDB主要完成下面三个方面的功能: 启动被调试程序 让被调试程序在指定的位置停住 当程序被停住时,可以检查程序状态 GDB快速入门 编译生成可执行文件 gcc -g test.c -o test 启动GDB gdb test 在main函数处设置断点 break main 运行程序 run 单步运行 next 继续运行 continue GDB命令 gdb 调试程序名 启动gdb gdb file 调试程序名 启动gdb list(l) 查看程序 break(b) 函数名 在…
GDB调试工具 Linux中包含一个很强大的调试工具GDB(GNU Debuger),可以用它来调试C和C++程序. 一. GDB的主要功能有: 设置断点,当程序运行到断点处暂停 显示变量的值,可以打印或者监视某个变量,将变量的值显示出来 单步执行,GDB允许用户单步执行程序,可以跟踪进入函数和从函数中退出 运行时修改变量的值,GDB允许在调试状态下修改变量的值,此功能在测试程序的时候特别有用 路径跟踪,GDB可以将代码的路径打印出来,方便用户跟踪代码 线程切换,在调试多线程的时候,此种功能是必…
工欲善其事必先利其器,如何使用调试工具gdb一步步调试nginx是了解nginx的重要手段. ps:本文的目标人群是像我这样初接触Unix编程的同学,如果有什么地方错误请指正. 熟悉gdb的使用 这里就不说了,谷歌一搜一堆,这里推荐一篇文章:GDB 命令详细解释 请重点看一下step,run,break,list,info,continue命令 下载nginx源码 这里使用nginx-1.0.14 src是源代码,auto文件夹是configure运行时候的各种命令集合 修改config并编译…
在写程序的时候,经常会遇到一些问题,比如某些变量计算结果不是我们预期的那样,这时我们需要对程序进行调试.本文主要介绍调试C/C++在Linux操作系统下主要的调试工具. 在Linux下写程序,C/C++主要的编译器有GCC/G++,ICC等,像我等穷码农,最喜欢GCC了,很大原因是他免费!所以,我们以GCC/G++为例介绍主要的调试工具. 分以下几个内容介绍: 1.调试之前的工作 2.选择调试工具 3.调试步骤 调试之前的工作 编译器在编译阶段需要产生可供调试的代码,才能被调试器调试.可以如下做…
调试是每个程序员都会面临的问题. 如何提高程序员的调试效率, 更好更快地定位程序中的问题从而加快程序开发的进度, 是大家共同面对的问题. 可能Windows用户顺口就会说出:用VC呗 :-) , 它提供了设置断点, 单步跟踪等的图形界面, 使调试起来直观易用. 但Linux用户可能要生闷气了 O:-) : 难道我们Linux程序员就只能使用原始的调试方法, 在代码中加入printf信息吗?难道Linux下就没有好的C语言调试工具吗? 当然不是了. GNU早就组织开发了一套C语言编译器(Gcc)和…
GDB调试qemu-kvm 前面几篇博文都是记录一些kvm相关包编译安装及使用,但都没深入去代码看看.看源码在配合上相关原理才能更好的理解kvm.但qemu-kvm的代码量很多,对我来讲直接看源码收获甚少,所以找了个调试工具——GDB来配合阅读代码.接下来记录下GDB的使用. 1.qemu-kvm添加debug参数 http://www.cnblogs.com/grglym/p/7896266.html 上面链接的这篇博文中已经有提到编译安装qemu-kvm了,这里就不在记录.主要不同的是为了实…
一.引言 在日常程序开发中不免遇到类似空指针操作导致程序崩溃的问题,所以需要一定的手段去定位bug,而断点调试是普遍使用的技巧,比如Windows中用VC++的debug模式进单步运行.断点调试等,而且是图形化操作界面很友好,但在Linux系统中使用的是没有图形界面的调试工具-GDB(听说eclipse支持GUI调试,暂未尝试),所以需要通过指令进行操作,下面逐步介绍gdb调试环境的搭建和使用方法. 二.gdb调试环境搭建 (1)下载gdb工具源码:http://www.gnu.org/soft…
什么叫在线调试?就是在线上生产环境进行调试,假设有一天某个用户报某个页面某个数据怎么不对啊,看来线上出BUG了,于是你要迅速找出原因,首先看日志,可是悲剧的没有足够的日志让你确定线上BUG的原因,也许你这时想看某个PHP变量的值,可是你敢在线上环境加个 echo? 出问题了,你就要下岗了,如果用线下环境,可是数据环境不同,可能难以复现线上的BUG呢,这个php在线调试工具就是为解决这种问题而生,可以让你方便地查看任意线上PHP变量的值而不用改动代码,就像C的调试工具gdb那样,以下叫它ydb.…
第一章初涉调试会话 调试工具 GDB,Unix下最常用的调试工具 DDD,基于GUI的调试器,大多数工具都是GDB的GUI前端. Eclipse,IDE也是一种调试工具 atoi( )把字符串变为整数,头文件是include<stdlib.h> gcc -g -Wall -o insert_sort ins.c -g选项可以让编译器将符号表(对应于程序的变量和代码行的内存地址列表)保存在生成的可执行文件里中. 这样才能在调试会话的过程中引用源代码中的变量和行号,比如“在第30行停止”或者“输出…
程序中除了一目了然的Bug之外都需要一定的调试手段来分析到底错在哪.到目前为止我们的调试手段只有一种:根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入 printf ,执行程序并分析打印结果,如果结果和预期的一样,就基本上证明了自己假设的错误原因,就可以动手修Bug了,如果结果和预期的不一样,就根据结果做进一步的假设和分析. 本章我们介绍一种很强大的调试工具 gdb ,可以完全操控程序的运行,使得程序就像你手里的玩具一样,叫它走就走,叫它停就停,并且随时可以查看程序中所有的内部状…
1. 使用printf调试 #ifdef DEBUG Printf(“valriable x has value = %d\n”, x) #endif 然后在编译选项中加入-DDEBUG 更复杂的调试应用如: #define BASIC_DEBUG 1 #define EXTRA_DEBUG 2 #define SUPER_DEBUG 4 #if (DEBUG &EXTRA_DEBUG) printf … #endif 在这种情况下如果设置编译器标志为-DDEBUG=5,将启用BASIC_DEB…
背景 调试工具gdb的使用对于嵌入式Linux开发人员来说是一项不可少的技能. 目前,嵌入式 Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机程序.用KGDB调试系统内核和用gdbserver调试用户空间程序. 这三种调试方法的区别主要在于,目标机远程调试stub 的存在形式的不同,而其设计思路和实现方法则是大致相同的. 我们最常用的是调试应用程序.就是采用gdb+gdbserver的方式进行调试.在很多接在情况下,用户需要对一个应用程序…
作者:良知犹存 转载授权以及围观:欢迎添加微信号:Conscience_Remains 总述 在window下我们习惯了IDE的各种调试按钮,说实话确实挺方便的,但到了Linux下,没有那么多的IDE支持我们调试,但是Linux有也有强大的命令行C/C++的调试工具--GDB,GNU提供的开源调试工具. 刚开始不习惯,使用多了我们就会喜欢上他,程序调试的单步执行,跳入函数,跳出函数,设置断点,设置观察点,查看变量.GDB都有,此外gdb还可以生成程序非法执行后core dump文件,这个文件有快…
1.问题发现 有这样一段代码: #include <stdio.h> int main() { int a, b, num1, num2, temp; printf("please input two numbers:\n"); scanf("%d,%d", &num1, &num2); if(num1 > 0 && num2 > 0) (1) { a = num1; b = num2; temp = a%b;…
一   前期准备工作       1 搭建环境 1.1下载内核源代码并编译内核 创建目录,并进入该目录: 下载源码: 解压缩,并进入该目录:xz -d linux-3.18.6.tar.xz tar -xvf linux-3.18.6 cd  linux-3.18.6 选定x86架构的相关文件编译: 编译: 1.2 制作根文件系统 在工作目录下新建一个文件夹: mkdir rootfs 下载老师提供的资料:git clone https://github.com/mengning/menu.gi…