首页 > 系统相关 >linux gdb debuging

linux gdb debuging

时间:2024-09-30 13:26:30浏览次数:7  
标签:10 frame gdb debuging 调试 linux 断点 输入

GDB

GNU 下的一个调试软件,在linux 下可以用来调试c/c++代码。

启动

可以通过gdb --help查看用法,如下:

This is the GNU debugger. Usage:
gdb [options] [executable-file [core-file or process-id]]
gdb [options] --args executable-file [inferior-arguments ...]
gdb [options] [--python|-P] script-file [script-arguments ...]

我们使用第二个用法,调试srs, gdb --args ./objs/srs -c conf/https.rtc.conf, 输出如下信息:

下断点

  1. 断点到主函数,可以输入 b main

  1. 断点到指定函数,可以直接输入函数名字,比如do_main, 可以直接指定文件名,比如b do_main但是这里,如果是重载的方法怎么办(重载是同名的)?

通过查找资料,同名的方法,可以将参数类型一起传递,或者直接输入方法名,gdb会列出多个可选的方法,然后我们选择对应的编号即可。

  1. 断点到指定文件的指定行?可以指定文件名加行号,比如b srs_app_conn.cpp:230. 指定相对路径的时候,遇到同名文件,会怎么办?这个遇到的时候再查.

  1. 如何查看所有断点?i b.

  1. 如何取消断点? d 1 d 2-4 删除指定编号的断点,或者clear location删除指定行的断点.

  1. 什么是观察断点?就是观察,当某一变量的值被读取了(rwatch)或者 被读取了+发生改变(awatch)时,触发断点.

  1. 条件断点?就是为局部变量设置条件,比如大于什么值或者等于什么值,用到了再说。

  2. 一次性删除所有断点?暂时不知道快捷方法,可以查询所有断点,然后按照编号,一次性删除d n-m

开始调试

输入r开始跑程序,遇到断点会自动停下来。

查看当前断点上下文

  1. 输入l可以查看断点行的上下5行共10行代码(默认)。

  1. 可以继续输入l查看后面的10行。

  2. 输入l -查看前10行.

  3. 也可以指定行数,l 10, 查看第10行的前后5行。

  4. 也可以指定多少行到多少行,l 10, 30.

  1. 可以输入help l查看用法详情,其他信息也可以。显而易见,从手册中可以看到只能看到10行,不能一次性指定20行。

查看堆栈信息

输入bt.

逐行调试

输入n.

调试到下一个断点

输入c.

打印变量值

输入p valuename.

进入函数内调试(逐步调试)

输入s. step.

Step program until it reaches a different source line.

提前结束函数内调试

输入fin. finish.

Execute until selected stack frame returns.
Upon return, the value returned is printed and put in the value history.

查看堆栈中某一步中的信息

Select and print a stack frame.
With no argument, print the selected stack frame. (See also "info frame").
An argument specifies the frame to select.
It can be a stack frame number or the address of the frame.
With argument, nothing is printed if input is coming from
a command file or a user-defined command.

输入 f [num or addre]

标签:10,frame,gdb,debuging,调试,linux,断点,输入
From: https://www.cnblogs.com/yinchaows/p/18214468

相关文章

  • Linux操作系统如何定时关机?
    在日常使用电脑的过程中,一般都会有软件升级、系统杀毒的工作,可能还需要电脑的定时关机、提醒事项功能。对于Linux操作系统,可以使用几种任务计划工具来指定相应的任务计划,使这些需求自动在后台运行。一、at命令at命令的作用是在一个指定的时间执行任务,且只能执行一次。它的使......
  • 【Linux】Docker下载与使用-nginx
    目录一、Docker介绍     二、Docker结构三、下载Daocker1.在linux上下载docker,执行以下命令即可:2.开启docker3.执行以下操作并进行使用四、在Docker上安装nginx一、Docker介绍             Docker:是给予Go语言实现的开源项目。   ......
  • linux串口(epoll)
    void*thread_basedata(void*arg){inti,ret;//Allocatememoryforreadbuffer,setsizeaccordingtoyourneedsunsignedcharread_buf[DATA_LEN];//Normallyyouwouldn'tdothismemset()call,butsincewewilljustreceive......
  • 关于linux修改密码和用户名
    1.重启linux 按下e键会看见 找到以linux16开头的那一行:linux16/vmlinuz-3.10.0-862.el7.x86_64root=UUID=...rocrashkernel=autorhgbquietLANG=zh_CN.UTF-8把光标移动到行尾,删除rhgbquiet,然后添加rd.break。最终看起来应该像这样:linux16/vmlinuz-3.......
  • linux路由知识入门
    博主githubpageiprule和iproute网络包优先匹配iprule中的规则,然后再被转到相应的iptable路由规则处理iprule#output#0:fromalllookuplocal#32766:fromalllookupmain#32767:fromalllookupdefault这三条规则是内核创建的前面的数字代......
  • 【玩转Linux】如何简单快速理解权限?
     学习编程就得循环渐进,扎实基础,勿在浮沙筑高台   循环渐进Forward-CSDN博客Hello,这里是kiki,今天更新Linux部分,我们继续来扩充我们的知识面,我希望能努力把抽象繁多的知识讲的生动又通俗易懂,今天要讲的是权限~目录 循环渐进Forward-CSDN博客shell命令以及运行......
  • linux中的标准信号
    什么是标准信号信号是事件发生时对进程的通知机制。有时也称之为软件中断。信号与硬件中断的相似之处在于打断了程序执行的正常流程,大多数情况下,无法预测信号到达的精确时间。信号分为两大类。第一组用于内核向进程通知事件,构成所谓传统或者标准信号。Linux中标准信号的编号......
  • linux: ss的常用场景
    一,列出所有监听中的端口#-l:  仅显示处于监听状态的套接字#-n: 以数字格式显示地址和端口。使用此选项可以避免将地址和端口转换为主机名或服务名,从而加快查询速度#-t: 仅显示TCP套接字信息#-p: 显示与每个套接字相关联的进程信息,包括进程ID和进程名称ss-lntp二,查......
  • 服务器Linux的一些常用命令,收藏备用!
    在Linux服务器的管理和维护过程中,掌握一些常用的命令是非常必要的。这些命令不仅可以帮助你更好地了解和控制系统,还能提高工作效率,减少错误发生的概率。本文将详细介绍一些在Linux服务器上常用的命令,覆盖从基本的文件操作到高级的系统管理,力求内容全面,帮助读者深入理解每一个命令......
  • Linux小tracks
    1.修改dns服务器:/etc/resolv.conf2.ssh证书连接简易操作:ssh-keygen-trsa-b2048|生成密钥对ssh-copy-idusername@remote_host|将你的公钥(通常是~/.ssh/id_rsa.pub)添加到你想要连接的服务器上的~/.ssh/authorized_keys文件中。你可以使用ssh-copy-id命令来......