3、利用GDB进行程序调试】的更多相关文章

本文将用一个实际例子讲解如何通过GDB进行程序调试. 首先,我们需要理解的是GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,其产生和调试的目的是让调试者知道,程序在执行时内部发生了什么,或者运行过程中在做什么,一般来说,GDB主要帮助实现以下四个方面的功能. 1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序.    2.可让被调试的程序在你所指定的调置的断点处停住.(断点可以是条件表达式)    3.当程序被停住时,可以检查此时你的程序中所发生的事.    4.动态的…
一.多线程调试 多线程调试重要就是下面几个命令: info thread 查看当前进程的线程. thread <ID> 切换调试的线程为指定ID的线程. break file.c:100 thread all  在file.c文件第100行处为所有经过这里的线程设置断点. set scheduler-locking off|on|step,这个是问得最多的.在使用step或者continue命令调试当前被调试线程的时候,其他线程也是同时执行的,怎么只让被调试程序执行呢?通过这个命令就可以实现这…
第一章初涉调试会话 调试工具 GDB,Unix下最常用的调试工具 DDD,基于GUI的调试器,大多数工具都是GDB的GUI前端. Eclipse,IDE也是一种调试工具 atoi( )把字符串变为整数,头文件是include<stdlib.h> gcc -g -Wall -o insert_sort ins.c -g选项可以让编译器将符号表(对应于程序的变量和代码行的内存地址列表)保存在生成的可执行文件里中. 这样才能在调试会话的过程中引用源代码中的变量和行号,比如“在第30行停止”或者“输出…
程序出现错误很正常,一个优秀的程序员必须学会调试,发现错误并改正.减少程序错误最有效的方法是:在敲代码之前,多花点时间思考,如何构造程序,数据结构和算法,尽量把细节提前写下来,可以尝试着在纸上写出核心代码,这样可以减少今后修改代码的时间. 1.常用的调试技巧 (1)代码检查,重新阅读程序,排除比较明显的错误.编译时带上-Wall参数,生成所有的警告信息.          gcc -Wall -pedantic -ansi   表示以ansi/iso生成所有的警告西信息. (2)取样法:在程序中…
3. GDB的实现 GDB是GNU发布的一个强大的程序调试工具,用以调试C/C++程序.可以使程序员在程序运行的时候观察程序在内存/寄存器中的使用情况.它的实现也是基于ptrace系统调用来完成的. 其原理是利用ptrace系统调用,在被调试程序和gdb之间建立跟踪关系.然后所有发送给被调试程序的信号(除SIGKILL)都会被gdb截 获,gdb根据截获的信号,查看被调试程序相应的内存地址,并控制被调试的程序继续运行.GDB常用的使用方法有断点设置和单步跟踪,接下来我们来分析一 下他们是如何实现…
用了好久的GCC/G++ 却一直都没用过GDB调试过程序,有时程序不是非常大,一般有错,直接看编译器编译结果就几乎相同知道错在哪儿了,或者使用codeblocks单步调试,甚至回到windows以下调试,可是总是不太方便,因此有必要看一下GDB调试方法和基本步骤. 以下是一个简单的演示: 首先创建一个有错误的代码,例如以下: 这个程序非常easy,目的是接受用户的输入,并将用户的输入回应输出来. 可是这个程序的第17行有个错误,使用了未初始化的字符指针name,因此编译执行后会出现段错误,例如以…
利用GDB调试汇编代码 首先编写c语言原代码,我使用的是同学分析过的代码 #include<stdio.h>short addend1 = 1;static int addend2 = 2;const static long addend3 = 3;static int g(int x){    return x + addend1;}  static const int f(int x){    return g(x + addend2);}int main(void){    return…
调试一个程序主要用到的功能: 启动程序 设置函数断点 设置数据断点 单步执行 查看内存值 修改内存值 linux下的gdb,和vxworks下的shell 虽然使用方式和调试命令略有不同,但是都能满足上述程序调试的基本功能.为了更好的理解和记忆,下面给出两者的差异点. 表1 功能 vxworks shell linux gdb 说明 启动程序 sp ts tr c start run finish c   设置函数断点 b bd bd all b <line/num/fun> delete b…
由于一些环境的制约,很多同学都可能需要在开发机上进行调试,但由于开发机资源的限制,在开发机上直接进行本地的GDB环境配置就成了难题,这个时候其实我们可以利用GDB中自带的gdbserver工具就可以进行远程开发机的调试. gdbserver可以走网络,串口等通信机制,对于网络来说支持ip:prot格式运行.比如你的开发机所在IP是192.168.3.11,你的机器是192.168.3.1,这个时候你首先先下好GDB的源码,然后进入到gdb_src/gdb/gdbserver目录下进行./conf…
gcc一般调试格式: gcc -Wall -o  test   test.c // -wall  显示程序错误详细信息      gcc -v  // 显示gcc的版本 gcc -o{1,2,3} test  test.c // 1,2,3三个级别的优化,优化级别越高编译的时间越长 gcc -ggdb3 -Wall -o test  test.c // 运用gdb可以跟踪调试程序,运行这命令gdb告诉gcc,使用gdb扩展产生调试,其中3表示使用的第三级调试信息,程序员可以获得更多的信息. 如果…