tag 标签: gdb

相关博文
  • GDB
    热度 2
    2024-2-17 10:13
    286 次阅读|
    0 个评论
    GDB(GNU Debugger)是GNU开源组织发布的一个强大的Unix/Linux下的程序调试工具。它允许你在程序运行时观察程序的内部状态和行为。GDB通过让你设置断点、单步执行程序、查看栈帧、变量值等手段,帮助开发者诊断和解决程序中的问题。 GDB的主要功能包括: 设置断点 :在代码中的特定位置设置断点,当程序运行到这些位置时,GDB会暂停程序的执行。 单步执行 :让程序一步步地执行,以便观察每一步的执行结果。 查看变量 :查看在程序执行过程中变量的值。 查看栈帧 :查看程序的调用栈,了解当前执行的函数以及被调用的函数。 控制程序执行 :继续执行程序、停止程序等。 GDB的命令行界面允许你使用各种命令来操作和控制调试过程。通过GDB,你可以更好地理解程序的内部行为,找到并修复程序中的错误。 要使用GDB进行调试,你需要将GDB与你的程序一起编译。在编译时,你需要使用-g选项来生成调试信息。例如,如果你使用GCC编译器,你可以这样编译你的程序: bash 复制代码 gcc -g my_program.c -o my_program 然后,你可以使用GDB来调试你的程序: bash 复制代码 gdb my_program 在GDB中,你可以使用各种命令来查看和控制程序的执行。例如,你可以使用break命令来设置断点,使用run命令来运行程序,使用next或step命令来单步执行程序,使用print命令来查看变量的值等。 GDB是一个功能强大的工具,对于C、C++等语言的程序开发来说,它是一个非常重要的调试工具。
  • 热度 23
    2012-12-19 14:26
    1321 次阅读|
    0 个评论
      前言: 一:what is GDB 二:从哪里可以获取 三:make ready 四:configure 五:debug hello example 六:run gdbserver 七:run client 八:碰到的问题 前言: 因GDB这部分我做得很不理想(不能debug module,也不能debug kernel),所以心得和调试经验就比较少。 一:what is GDB GDB-即GNU-Project-Debugger; 二:从哪里可以获取 我用的是gdb-6.4,官方下载地址:http://ftp.gnu.org/gnu/gdb/ 官方相关文档:http://sourceware.org/gdb/current/onlinedocs/gdb_toc.html 三:make ready 因为我的环境是: Host:一台装有ubuntu的PC(192.168.110.77) Target:LYTs3c2410开发板(192.168.110.9) Host上的目录结构为: root@pc-ubuntu:/home/cgm/gdb/                 (总目录) gdb-6.4               (即解压后的源码) build/                 (build目录) client/             (gdb-6.4 build相关信息) server/             (gdbserver build相关信息) gdb_client_install/    (gdb-6.4 make install 安放目录) gdb_server_install/  (gdbserver make install 安放目录) 四:configure Configure client root@pc-ubuntu#cd /home/cgm/gdb/build/client #/home/cgm/gdb/gdb-6.4/configure --target=arm-linux –prefix=/home/cgm/gdb/gdb_client_install/ #make #make install Configure GDBServer #cd /home/cgm/gdb/build/server #CC=arm-linux-gcc /home/cgm/gdb/gdb-6.4/gdbserver/configure –host=arm-linux –prefix =\ Home/cgm/gdb/gdb_server_install/ #make #make install 五:debug hello example 准备hello.c文件 如: /*Hello.c*/ #include int a=9; int main(void) { char *hello="hello!\n"; unsigned short i; for(i=a;i16;i++) { printf("%s",hello); } return 0; } #arm-linux-gcc –g hello.c –o hello 将会得到名为hello的可执行文件 六:run gdbserver copy gdbserver 和hello到target nfs 目录下 #cp / Home/cgm/gdb/gdb_server_install/bin/gdbserver  home/cgm/Linux/root_nfs/ #cp /home/cgm/gdb/hello/hello  /home/cgm/Linux/root_nfs/ 通过NFS方式加载kernel zImage #ls类容如下: #./gdbserver 192.168.110.77:1234 hello 现象如下: 这样gdbserver就处于listen状态,等待client的链接. 七:run client #cd /home/cgm/gdb/gdb_client_install/bin/ #./arm-linux-gdb /home/cgm/Linux/root_nfs/hello现象如下 #target remote 192.168.110.9:1234 将会看到 在target端则可以看到 接下来就可以在client端输入各种gdb的命令了 如: #list 结果如下: 还有break,info all-registers,info locals,print a(a为变量)等命令。 (gdb)break 11  (即在11行处设置断点,程序运行到此处则停下) (gdb)info all-register (显示左右register值) (gdb)info locals(显示所有局部变量的值) (gdb)print a (a即为hello.c里面的一个全局变量,此命令即显示当前a的值) 八:碰到的问题 # ./gdbserver 192.168.110.77:2345 hello ./gdbserver: error while loading shared libraries: libthread_db.so.1: cannot open shared object file: No such file or directory 到相关的toolchain (我用的是arm-3.4.1)里面找到需要的库,考到root_nfs的lib下面即可。    
相关资源
  • 所需E币: 0
    时间: 2023-6-13 11:51
    大小: 817B
    上传者: 蝴蝶结欧恩
    分享一套课程——LinuxGDBC/C++调试基础与提升视频课程,提供源码+PPT下载。适合人群:具有LinuxC/C++开发基本知识,希望能在Linux上开发C/C++程序以及希望gdb的调试技巧与知识有所突破的同学你将会学到:全面掌握Linuxgdb调试技术与技巧,提升快速定位bug和修复bug能力掌握LinuxgdbC/C++调试基本知识熟练掌握LinuxgdbC/C++调试基本技巧熟练掌握LinuxgdbC/C++高级调试技巧达到快速定位BUG,快速纠错的能力课程简介:这是关于LinuxC/C++gdb调试课程,主要介绍LinuxgdbC/C++调试基本知识,LinuxgdbC/C++调试基本技巧和LinuxgdbC/C++高级调试技巧,能够快速上手,快速实战,达到快速定位BUG,快速纠错的能力!尤其是一些高级知识,比如内存泄漏,缓冲区溢出,堆内存破坏问题,死锁问题,崩溃问题,coredump分析,软件密码“破解”等等,一定会让你受益匪浅!
  • 所需E币: 4
    时间: 2019-12-26 10:46
    大小: 421.14KB
    上传者: 微风DS
    用gnu工具开发基于arm的嵌入式系统……
  • 所需E币: 5
    时间: 2019-12-25 21:35
    大小: 9.54KB
    上传者: 16245458_qq.com
    Linux包含了一个叫gdb的GNU调试程序.gdb是一个用来调试C和C++程序的强力调试器.它使你能在程序运行时观察程序的内部结构和内存的使用情况.……
  • 所需E币: 4
    时间: 2019-12-25 21:35
    大小: 27.11KB
    上传者: 微风DS
    Linux的大部分特色源自于shell的GNU调试器,也称作gdb。gdb可以让您查看程序的内部结构、打印变量值、设置断点,以及单步调试源代码。它是功能极其强大的工具,适用于修复程序代码中的问题。在本文中,DavidSeager将尝试说明gdb有多棒,多实用。……
  • 所需E币: 4
    时间: 2019-12-25 21:20
    大小: 18.64KB
    上传者: 16245458_qq.com
    ProductlistBDIproductsforGNUDebugger……
  • 所需E币: 4
    时间: 2019-12-25 16:41
    大小: 91.5KB
    上传者: rdg1993
    分享一下本人收集的嵌入式开发资料,希望对同行有所帮助。«mt的权限|Main|定下blog和论坛的结合方式»用GDB调试程序GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能。于是UNIX下的软件比Windows下的软件更能有机地结合,各自发挥各自的长处,组合成更为强劲的功能。而Windows下的图形软件基本上是各自为营,互相不能调用,很不利于各种软件的相互集成。在这里并不是要和Windows做个什么比较,所谓“寸有所长,尺有所短”,图形化工具还是有不如命令行的地方。用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能:1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3、当程序被停住时,可以检查此时你的程序中所发生的事。4、动态的改变你程序的执行环境。从上面看来,GDB和一般的调试工具没有什么两样,基本上也是完成这些功能,不过在细节上,你会发现GDB这个调试工具的强大,大家可能比较习惯了图形化的调试工具,但有时候,命令行的调试工具却有着图形化工具所不能完成的功能。让我们一一看来。一个调试示例——————源程序:tst.c……
  • 所需E币: 4
    时间: 2019-12-25 16:42
    大小: 29.5KB
    上传者: 微风DS
    分享一下本人收集的嵌入式开发资料,希望对同行有所帮助。Gdb调试命令集一、调试方法:首先,gdb到代码的出错处;然后,bt(backtrace)看函数堆栈,确定问题出在那条语句。p(print)打印变量的值,找原因up进入上一层堆栈,追溯问题出在哪里。二、gdb命令集关于断点的命令:awatch:awatch用来为一个表达式设置观察点,在表达式的值发生改变时,或者当表达式的值被读取的时候,程序停止执行。break:用于在程序中设置断点break+要设置断点的行号clear:用于清除断点clear+要清除断点的行号commands:用于为遇到断点之后执行特定的指令而设置的command+断点号如果commands之后没有断点号,gdb会将最后一个设置的断点编号作为默认值。condition:在满足一定的条件时才在指定的行上设置断点condition断点编号条件表达式delete:用于清除断点和自动显示的表达式的命令。与clear的不同之处:clear要给出断点的行号,delete要给出断点的编号。用clear命令清除断点时gdb会给出提示,而用delete清除断点时gdb不会给出任何提示disable:让所设断点暂时失效。如果要让多个编号处的断点失效可将编号之间用空格隔开enable:与disable相对ignore:这条命令在一定范围内忽略用户设定的断点ignoreNCONTtbreak:用于设置临时断点,所谓临时断点就是断点只在设置之后起作用一次。watch:与awatch类似关于数据的命令:display:该命令用于显示表达式的值,使用了该命令后,每当程序运行到断……
  • 所需E币: 4
    时间: 2019-12-25 15:58
    大小: 3.36MB
    上传者: 微风DS
    嵌入式Linux入门与提高……
  • 所需E币: 3
    时间: 2019-12-25 15:59
    大小: 3.36MB
    上传者: 238112554_qq
    嵌入式Linux入门与提高……
  • 所需E币: 5
    时间: 2019-12-25 15:26
    大小: 253.08KB
    上传者: quw431979_163.com
    嵌入式系统设计简介18zzzz!"#$%&'()*+,-./0123401256%&789:;?@ABC=DEFG%&HIJKLMNOPQMFGRS@T4012UVDEFG@TWXKYZLM[65\]^_`5\abcd]?ef$gOPhijkl$OPmnoQMpqrspql$tuvP35\"#$wxoKyz{%&!|}~%&vP3"#$wxoKl|6WOPQM=4012VNywxOP6OP.YZOPQMOP!"#oQM2g=4012UVN26C¤Q#U27FG@§¨T°!±8`wx!$%&%&!%FGRS@TWX"#$wxoNFG%&Q>99E×99"#$wxoYZFGRS@TiL°!abcdHI1KDàá"#$wxo&'=.èéê"#$wxoEE`5ì×5\()#*+'Eíg"#$wxog(!ò¤góg(¤M."#$wxo"#$÷ùCú.2FG@§¤M="#$wxo¤ü=,!-%.,*l"#$9#¤P@TpP8QM?e¤FGRS°!/!-/"#$g¤+!-/9?e……
  • 所需E币: 3
    时间: 2019-12-25 12:48
    大小: 716.43KB
    上传者: 微风DS
    GDB通过JTAG接口连接调试目标平台DESIGNSTRATEGIESANDMETHODOLOGIESGDB通过JTAG接口连接调试目标平台作者:概述步执行,设置断点,检查内存,或者其StevenHorne他的一些调试操作。现在越来越多的OEM厂商使用RealView调试工具产品经理GNU的工具链来开发基于嵌入式Linux系ARM公司统的应用程序。传统的设计流程是用GDB通常需要一些特定的程序GDB的调试器通过专门的通信端口,比(GDBstub)驻留在目标平台上,使得如串口或者以太网口,连接驻留在目标主机能够通过一定的通信协议对目标平台平台上的GDBstub/server程序。但是现进行调试操作,比如访问目标平台的寄存……
  • 所需E币: 3
    时间: 2019-12-25 12:37
    大小: 7.02KB
    上传者: 微风DS
    使用gdb调试嵌入式系统……
  • 所需E币: 5
    时间: 2019-12-25 11:36
    大小: 210.33KB
    上传者: wsu_w_hotmail.com
    给出在VIM编辑器中实现对嵌入式软件调试功能的集成方法。首先,将VIM源码打上vimgdb补丁,使重新编译出来的VIM编辑器支持在其内部对调试器gdb的调用。然后,建立与安装适合调试嵌入式软件的gdb组件,并对vimgdb脚本进行适当的修改,使VIM可方便地在适合PC与嵌入式软件调试的gdb组件间切换。调试样例过程表明,在VIM中实现了对嵌入式软件的调试,而且,这种调试模式可行、高效。……
  • 所需E币: 4
    时间: 2019-12-25 01:58
    大小: 1.73MB
    上传者: quw431979_163.com
    针对国产SPARCv8处理器MXT0106,开展嵌入式系统专用调试环境研究,完成基于片上调试支持单元的软件调试环境的设计和实现,并和集成开发环境SPE-C进行了集成。……