社区
C++ 语言
帖子详情
GDB中断当前运行问题
31415926801227
2009-03-08 09:13:37
当程序运行时候,在到下一个断点之前。GDB的控制台就不能输入命令了。这个时候我想通过GDB控制台输入命令就不行了。
大家有什么方法中的程序运行,让程序断在运行时刻的那个地方吗?
...全文
596
8
打赏
收藏
GDB中断当前运行问题
当程序运行时候,在到下一个断点之前。GDB的控制台就不能输入命令了。这个时候我想通过GDB控制台输入命令就不行了。 大家有什么方法中的程序运行,让程序断在运行时刻的那个地方吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wushichao1987
2012-08-13
打赏
举报
回复
09年的帖子,擦
wushichao1987
2012-08-13
打赏
举报
回复
c & 后台continue
猫已经找不回了
2009-03-09
打赏
举报
回复
楼主没表达清楚啊.
ForestDB
2009-03-09
打赏
举报
回复
[Quote=引用 2 楼 fox000002 的回复:]
Ctrl-c 发送个 SIGINT 不就是 stop 了吗
[/Quote]
实在不懂LZ的意思。
ysysbaobei
2009-03-09
打赏
举报
回复
顶
jl443960770
2009-03-09
打赏
举报
回复
设置观察点(WatchPoint)
观察点一般来观察某个表达式(变量也是一种表达式)的值是否有变化了,如果有变化,马上停住程序。我们有下面的
几种方法来设置观察点:
watch <expr>
为表达式(变量)expr设置一个观察点。一量表达式值有变化时,马上停住程序。
rwatch <expr>
当表达式(变量)expr被读时,停住程序。
awatch <expr>
当表达式(变量)的值被读或被写时,停住程序。
fox000002
2009-03-08
打赏
举报
回复
Ctrl-c 发送个 SIGINT 不就是 stop 了吗
yangch_nhcmo
2009-03-08
打赏
举报
回复
没大明白楼主的意思
GDB
调试 Linux C / C++
# 论 调试能力在开发程序中的重要性 调试是开发流程中一个非常重要的环境,每个程序员都应具备调试代码的能力,尤其对于从事 Linux C/C++ 开发的用户,必须具备熟练使用
GDB
调试器的能力。俗话说你有十分技能,那么其中包含了六分开发能力和四分调试能力。这套
GDB
入门视频教程能够做到深入浅出,让同学们能够快速学会使用
GDB
调试程序。#
GDB
简介 GNU symbolic debugger,简称
GDB
调试器,是 Linux 平台下最常用的一款程序调试器。
GDB
编译器通常以
gdb
命令的形式在终端(Shell)中使用,它有很多选项,这是我们要重点学习的。 发展至今,
GDB
调试器已经对 C、C++、Go、Objective-C、OpenCL、Ada 等多种编程语言提供了支持。实际场景中,
GDB
更常用来调试 C 和 C++ 程序,虽然 Linux 平台下有很多能编写 C、C++ 代码的集成开发工具(IDE),但它们调试代码的能力往往都源自
GDB
调试器。
gdb
调试的时候,如何知道程序
当前
运行
的位置
当程序执行到你设置的断点位置时,
gdb
会
中断
程序的执行,并且显示
当前
所在的文件名和行号。你可以使用命令break 文件名:行号来设置断点,或者使用break 函数名来设置在某个函数中的断点。4:使用
gdb
的display命令,可以在每次程序停下来时显示某个表达式的值。你可以使用display 变量名来监视某个变量的值,或者使用display 函数名来监视某个函数的返回值。1:使用
gdb
的命令where或backtrace,可以显示
当前
的函数调用栈信息,包括正在执行的函数以及调用关系。
gdb
调试正在
运行
的进程
有时会遇到一种很特殊的调试需求,对
当前
正在
运行
的其它进程进行调试(正是我今天遇到的情形)。这种情况有可能发生在那些无法直接在调试器中
运行
的进程身 上,例如有的进程 只能在系统启动时
运行
。另外如果需要对进程产生的子进程进行调试的话,也只能采用这种方式。
GDB
可以对正在执行的程序进行调度,它允许开发人员
中断
程序 并查看其状态,之后还能让这个程序正常地继续执行。
GDB
提供了两种方式来
如何在调试pwn题的时候让
gdb
中断
在read()处(ctrl+c失效情况下)然后手动发送随意二进制流
平时使用
gdb
调试二进制程序的时候,可能会使用ctrl+c发送SIGINT来强迫程序
中断
好让
gdb
自动断点在read附近以方便我们调试,即使是qemu
运行
的程序也会把ctrl+c的SIGINT传递给内部模拟环境中的程序。 但是在使用pwntool调试程序的时候,由于pwntool和程序的交互用的是管道tube,所以我们无法发送SIGINT信号。 如果是非qemu启动的程序,我们可以使用
gdb
传输SIGINT信号,即在
gdb
里面按ctrl+C,很遗憾,当阻塞在系统调用的时候,
gdb
会把SIGINT发给系统进程
GDB
入门教程之暂停程序
GDB
入门教程之暂停程序一、断点设置与查看二、观察点设置与查看三、捕捉点设置与查看四、修改停止点状态五、修改停止条件六、为停止点设定
运行
命令七、恢复程序
运行
使用
GDB
调试程序时,在合适的时机暂停程序的
运行
是最基本且必须的操作。这里提到的合适时机暂停包括控制程序在哪行暂停、在什么条件下暂停、在收到什么信号时暂停等。
GDB
提供的暂停程序
运行
的方式包括:断点 (BreakPoint)、观察点 (WatchPoint)、捕捉点 (CatchPoint)、信号 (Signals)、线程停止 (Thread
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章