`
king523103
  • 浏览: 8325 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

GDB

 
阅读更多

调用gdb编译需要在cc后面加 -g参数再加-o;

[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) shell 命令行:执行shell命令行

(gdb) set args 参数:指定运行时的参数

(gdb) show args:查看设置好的参数

(gdb) show paths:查看程序运行路径;

           set environment varname [=value] 设置环境变量。如:set env USER=hchen;

            show environment [varname] 查看环境变量;

(gdb) cd 相当于shell的cd;

(gdb)pwd :显示当前所在目录

(gdb)info program: 来查看程序的是否在运行,进程号,被暂停的原因。

(gdb)clear 行号n:清除第n行的断点

(gdb)delete 断点号n:删除第n个断点

(gdb)disable 断点号n:暂停第n个断点

(gdb)enable 断点号n:开启第n个断点

(gdb)step:单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的

 

  • list :简记为 l ,其作用就是列出程序的源代码,默认每次显示10行。
  • list 行号:将显示当前文件以“行号”为中心的前后10行代码,如:list 12
  • list 函数名:将显示“函数名”所在函数的源代码,如:list main
  • list :不带参数,将接着上一次 list 命令的,输出下边的内容。
注意 :如果运行list 命令得到类似如下的打印,那是因为在编译程序时没有加入 -g 选项:
(gdb) list
1       ../sysdeps/i386/elf/start.S: No such file or directory.
        in ../sysdeps/i386/elf/start.S

 

  • run:简记为 r ,其作用是运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令。
  • 回车:重复上一条命令。
  • set args:设置运行程序时的命令行参数,如:set args 33 55
  • show args:显示命令行参数
  • continue:简讯为 c ,其作用是继续运行被断点中断的程序。
  • break:为程序设置断点。
  • break 行号:在当前文件的“行号”处设置断点,如:break  33
  • break 函数名:在用户定义的函数“函数名”处设置断点,如:break cb_button
  • info breakpoints:显示当前程序的断点设置情况
  • disable breakpoints Num:关闭断点“Num”,使其无效,其中“Num”为 info breakpoints 中显示的对应值
  • enable breakpoints Num:打开断点“Num”,使其重新生效
  • step:简记为 s ,单步跟踪程序,当遇到函数调用时,则进入此函数体(一般只进入用户自定义函数)。
  • next:简记为 n,单步跟踪程序,当遇到函数调用时,也不进入此函数体;此命令同 step 的主要区别是,step 遇到用户自定义的函数,将步进到函数中去运行,而 next 则直接调用函数,不会进入到函数体内。
  • until:当你厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体。
  • finish: 运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参数值等信息。
  • stepi或nexti:单步跟踪一些机器指令。
  • print 表达式:简记为 p ,其中“表达式”可以是任何当前正在被测试程序的有效表达式,比如当前正在调试C语言的程序,那么“表达式”可以是任何C语言的有效表达式,包括数字,变量甚至是函数调用。
  • print a:将显示整数 a 的值
  • print ++a:将把 a 中的值加1,并显示出来
  • print name:将显示字符串 name 的值
  • print gdb_test(22):将以整数22作为参数调用 gdb_test() 函数
  • print gdb_test(a):将以变量 a 作为参数调用 gdb_test() 函数
  • bt:显示当前程序的函数调用堆栈。
  • display 表达式:在单步运行时将非常有用,使用display命令设置一个表达式后,它将在每次单步进行指令后,紧接着输出被设置的表达式及值。如: display a
  • watch 表达式:设置一个监视点,一旦被监视的“表达式”的值改变,gdb将强行终止正在被调试的程序。如: watch a
  • kill:将强行终止当前正在调试的程序
  • help 命令:help 命令将显示“命令”的常用帮助信息
  • call 函数(参数):调用“函数”,并传递“参数”,如:call  gdb_test(55)
  • layout:用于分割窗口,可以一边查看代码,一边测试:
  • layout src:显示源代码窗口
  • layout asm:显示反汇编窗口
  • layout regs:显示源代码/反汇编和CPU寄存器窗口
  • layout split:显示源代码和反汇编窗口
  • Ctrl + L:刷新窗口
  • quit:简记为 q ,退出gdb

当然,gdb的功能远不止这些,包括多进程/多线程/信号/远程调试等功能在这里均没有提及,有需要的读者可以参考其它信息。

分享到:
评论

相关推荐

    gdb完全手册.pdf.zip_GDB pdf_GDB中文手册_gdb_linux_linux gdb pdf

    这是GDB完全手册,用来在Linux环境下的GDB调试,很重要

    Debugging With GDB中文版

    This is the Tenth Edition, of Debugging with GDB: the GNU Source-Level Debugger for GDB (GDB) Version 8.1.90.20180814-git. Copyright © 1988-2018 Free Software Foundation, Inc. Permission is granted...

    GDAL 1.10全套增加FileGDB支持

    内部将FileGDB、HDF4、HDF5、GEOS、PROJ4、ECW、Jpg2000、libexpt、libcurl、libiconv、netcdf、xerces_c、sqlite3等常用的库全部编译进去 语言 C\C++、C#、Java、Python 含有帮助文档 如果程序不能执行,或者...

    gdb+gdbserver安装,配置和调试

    就目前而言,嵌入式Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:...采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试。

    VisualGDB 5.6 R9//支持VS2008-VS2022

    VisualGDB 是 Visual Studio 的一个非常强大的扩展,它允许您调试或调试嵌入式系统。这个程序有一个非常有吸引力的用户界面,它具有许多用于调试或调试代码的功能。VisualGDB 还有一个向导,可以帮助您调试程序并为...

    基于FME实现的地理数据库建库工具,gdb批量建库工具,mdb批量建库工具,shp批量建库工具,自动建库,mdb建库,gdb建库

    2.支持gdb、mdb、shapefile格式的标准数据库建库 3.实现字段长度、字段别名、字段类型、图层别名、图层类型、要素集、坐标系的设置。 4.支持点、线、面、文本、表等图层 5.工具的实现过程无需写出读取临时表,更加...

    gdb实例.docx

    gdb调试案例gdb64常用命令说明: [root@redhat home]#gdb 调试文件:启动gdb (gdb) l :(字母l)从第一行开始列出源码 (gdb) break n :在第n行处设置断点 (gdb) break func:在函数func()的入口处设置断点 (gdb) ...

    GDB调试GDB调试

    GDB调试GDB调试GDB调试GDB调试GDB调试 GDB调试GDB调试GDB调试GDB调试GDB调试

    gdb 快速入门中文教程

    GDB使用手册 GDB调试器使用手册(一) ................................................................................................. 1 使用GDB: ........................................................

    arcgis中mdb批量转gdb

    功能:可以在arcgis软件中,利用mdb批量转gdb工具,实现批量的mdb转为gdb

    GDB调试详细命令

    GDB详细手册,文档内部分内容: //查看运行中的线程 (gdb) info thread //查看线程 (gdb) thread <n> //切换为线程id (gdb) bt //backtrace 打印堆栈 (gdb) break xx.cpp:xx thread all //在所有线程上打断点 (gdb) ...

    python实现制定目录下所有arcgis gdb内要素的批量添加

    (1)利用os.walk搜索制定目录下所有gdb目录下的要素,采用arcpy将gdb内的要素批量加载至arcmap中。 (2)实现的主要技术难点是目录、gdb名称、要素名称中存在中文,制造了很大的困难,本脚本顺利解决了中文乱码的...

    包括gdb64.exe和gdb.exe

    gdb64.exe和gdb.exe,呐,如名字所示喽

    gdb调试(个人收集的丰富的GDB调试资料)

    GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大...

    Linux GDB调试文档

    使用GDB调试,英文版。对于从事 Linux C/C++ 后台开发的读者来说,GDB 调试是需要熟练掌握的一项技能

    visualgdb 5.1r5 正式版 破解

    visualgdb新版本对android的开发调试支持越来越好。我相信很多用户会对这个的需求越来越深入。喝水不忘挖井人,感谢VISUALGDB这个产品的开发者。更感谢fallrain 对此做的贡献。 Fixes in R5: Added a workaround for...

    BDI3000 GDB中文手册

    BDI3000/2000 是一款功能强大而且非常稳定耐用的JTAG/BDM仿真器,可以在 Windows/Linux平台下使用,通过...BDI支持很多调试器,其中bdiGDB采用标准的GDB远程协议,支持GNU debugger (GDB),是调 试Linux的首选工具。

    arcgis批量mdb转gdb

    arcgis批量mdb转gdb。arcgis批量mdb转gdb................

    用GDB调试程序.pdf

    用GDB调试程序 重新编排,整洁美观。 GDB 概述 GDB 是GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。或许,各位比较喜欢那种图形界面方 式的,像VC、BCB 等IDE 的调试,但如果你是在 UNIX 平台下做软件,你...

    GDB调试完整文档

    比较全面的GDB调试使用文档。 GDB概述 使用GDB GDB的命令概貌 GDB中运行UNIX的shell程序 在GDB中运行程序 调试已运行的程序 暂停 / 恢复程序运行 一、设置断点(BreakPoint) 二、设置观察点(WatchPoint)...

Global site tag (gtag.js) - Google Analytics