GDB attach到进程

深入解析gdb -p 与gdb attach 的区别与使用场景 在Linux系统中,GDB(GNU Debugger)是一款功能强大的调试工具,广泛应用于程序开发和调试过程。在使用GDB进行调试时,我们常常需要将GDB附加到正在运行的进程上。本文将对比两种附加进程的方法:gdb -p 和gdb attach ,分析它们的区别和使用场景。本文详细对比了gdb -p 与gdb attach 的使用方法、场景及优缺点。摘要:本文将详细对比gdb -p 与gdb attach 这两个命令的使用方法、场景及优缺点,帮助读者更好地理解并运用这两个调试工具。 阅读详情

要调试守护进程等已经启动的进程或是调试陷于死循环的进程可以使用attach命令

格式 attach pid

C语言代码

#include <stdio.h>         
int main(void)    
{       
	int marks[10];     
	int i;   
	
	for(i=0;i<12;i++)     
	{     
	scanf("%d",&marks[i]);     
	}
	
	for(i=0;i<12;i++)     
	{     
	printf("%d",marks[i]);     
	}  
}


 

查看进程id

#ps ax

或者

#ps au

启动GDB

#gdb

用bt命令显示backtrace栈帧,可以看到程序通过怎样的调用途径陷入等待状态。

从上图可见调用了系统调用_isoc99_scanf()。

查看源代码,发现确是scanf("%d",&marks[i]);

attach之后就可以使用普通的gdb命令

进程信息可以用info proc显示

寄存器信息可以用info reg显示

 

gdb手册 无论是PC还是嵌入式Linux应用开发,GDB是不可或缺的试工具,本文总结一些常用技巧。 阅读详情

相关推荐

GDB的基本使用方法(之二)

要调试守护进程(daemon process)等已经启动的进程,或是调试陷入死循环而无法返回控制台的进程时,可以使用attach命令,形式是: (gdb) attach PID attach之后就能使用普通的gdb命令,因此可以通过print显示变量,也可以设置断点。 此外,回复程序运行一般可以使用continue命令。 确认了行为之后,需要在gdb和进程分离时使用detach命令: (gdb) detach

相忘于江湖的专栏 1197

Linux下gdb attach的使用(调试已在运行的进程)

在Linux上,执行有多线程的程序时,当程序执行退出操作时有时会遇到卡死现象,如果程序模块多,代码量大,很难快速定位,此时可试试gdb attach方法。 测试代码main.cpp如下,这里为了使程序退出时产生卡死现象,在第51行时push线程sleep 100分钟: #include <stdio.h> #include <thread> #include <...

网络资源是无限的 7万+

Linux下gdb attach的使用(调试已在运行的进程), my write

在Linux上,执行有的程序时,当程序执行退出操作时有时会遇到卡死现象,如果程序模块多,代码量大,很难快速定位,此时可试试gdb attach方法。

小硕算法工程师 1411

高级调试技巧揭秘:深入了解gdb调试正在运行的进程

这篇文章深入介绍了使用gdb进行高级调试的各种技巧和方法,包括调试正在运行的进程、远程调试、动态调试、内存调试、多线程调试和调试优化代码。这些技巧对于开发人员在调试和优化复杂程序时非常有用。重点是深入了解如何使用gdb调试正在运行的进程。

Lion_Long的博客 5742

gdb attach到已经存在的进程进行在线调试------能获取当前栈的所有变量值

gdb attach到已经存在的进程进行在线调试------能获取当前栈的所有变量值

sjhfkhsf的博客 639

使用bpftrace+GDB尽早attach启动时间不定的进程

Bpftrace是一个基于eBPF(Extended BPF)技术的高级动态跟踪工具,主要用于监控和分析Linux系统的活动。它的特点在于使用简单易懂的声明式语言进行脚本编写,能够快速创建和运行复杂的跟踪脚本,以便捕获并分析各种有关进程、文件系统、网络、内存、CPU等方面的事件和统计信息。

深山老宅的虚拟空间 1256

gdb进程调试 (gdb attach)

然后需要找到进程的PID,以命令:ps -ef | grep python为例(建议进程中加入类似time.sleep()这样的函数,方便调试)1. bt:查看函数调用栈的所有信息,当程序执行异常时,可通过此命令查看程序的调用过程;3. thread id:切换到具体的线程id,一般切换到具体的线程后再执行bt等操作。,一个窗口用于启动进程,另一个使用gdb命令进行调试。2. info threads:显示当前进程中的线程;:列出系统中的所有进程,并显示详细信息。的使用(调试已在运行的进程)。

Kevin_XZY的博客 2573

多思计算机组成原理实验:模型机课程设计

计算机组成原理实验教程 基于多思网络虚拟实验系统 张雯雰

Nick的博客 2万+

gdb attach 进程

gdb调试正在运行的进程 2009年04月18日 星期六 下午 08:21     有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试(正是我今天遇到的情形)。这种情况有可能发生在那些无法直接在调试器中运行的进程身上,例如有的进程 只能在系统启动

chenghu2439的专栏 4万+

解决windows10下无法安装.net framework 3.5(包括.net2.0和3.0)

入域电脑,win10系统中安装 .net framework 3.5(包括.net2.0和3.0)

God_me_1的博客 4万+

kaggle竞赛平台上数据集下载详解

从kaggle 网站上下载数据集既保证了速度又避免了网络的不稳定造成下载失败问题。该平台也可以上传代码作为自己的代码库,不过本人更习惯将代码上传到github上。希望本人整理的kaggle库使用技巧能够帮助到正在阅读本博客的你。此外还有一篇博客针对kaggle数据集下载问题的几个问题的相关文章进行了整理【博客链接】。

li1784506的博客 2万+

如何使用gdb快速attach到所需进程上

如何使用gdb快速attach到所需进程上大家都知道,gdb的调试功能非常强大,可以attach到打开调试开关编译出来的进程上调试进程,但是在这个流程中,你首先需要ps -ef | grep到你那个进程,然后找到进程号,然后再使用gdb attach命令attach进进程。首先,这个就比较麻烦,需要执行三条命令;其次,这个方法也肯定不是一个自动化attach进进程所应该允许的流程。这里就介绍一条命令

绯浅yousa的笔记 6049

放弃FFT全频计算!在STM32F407上用DFT单点计算提速50%的优化技巧

本文详细介绍了在STM32F407上通过DFT单点计算实现比FFT快50%的优化技巧,特别适用于生物阻抗分析、振动监测等只需关注单一频点的嵌入式场景。通过预计算相位角、查表法和混合精度计算等策略,显著提升计算效率和内存利用率,同时保持高精度。

weixin_28738397的博客 194

如何使用gdb调试多进程 (attach方法)

如何使用gdb调试多进程 (attach方法) 分类: linux2011-09-13 15:11 426人阅读 评论(0) 收藏 举报 [测试程序] 我们先看看我们的测试程序: /* in eg1.c */ int wib(int no1, int no2) {         int result, diff;         diff = no1 -

jfkidear的专栏 2万+

Unity卡通渲染实战:原神PMX模型Blender转FBX全流程

卡通渲染是二次元游戏开发的核心技术之一,其本质在于对光照模型、顶点色控制与边缘光生成的精准建模。本文从基础概念切入,解析MMD PMX格式的数据结构原理,阐明顶点色(Vertex Color)与Toon Ramp贴图在风格化渲染中的技术价值;进而覆盖Blender到Unity的跨引擎资产流转关键路径,重点解决法线校准、骨骼命名适配、FBX导出参数配置等工业级断点问题;最终落地于Unity内置管线与URP双环境下的卡通Shader定制与Render Feature实现。内容聚焦原神风格角色资产重铸实践,涵盖P

weixin_38166557的博客 437

【乐鑫】唤醒词修改方法

乐鑫科技的语音识别模块(如ESP-SR)支持自定义唤醒词,但需通过官方工具链完成。

以实战经验介绍行业知识 827

【转】GDB attach到一个进程

要调试守护进程等已经启动的进程或是调试陷于死循环的进程可以使用attach命令格式 attach pidC语言代码#include <stdio.h> int main(void) { int marks[10]; int i; for(i=0;i<12;i++) { scanf("%d",&am...

354

Python全栈入门到实战【AI实战篇 01】DeepSeek官方API全流程实战,第一个AI项目前置必备

文章摘要 本文介绍了基于DeepSeek API开发智能助手的前期准备和基础调用流程。内容涵盖: 前期准备:访问DeepSeek官网、完成账号注册与实名认证。 API Key获取:充值并创建API Key,强调密钥安全保存的重要性。 查阅文档:定位官方接口文档中的Python调用示例。 环境配置:安装openai依赖包,配置环境变量存储API Key。 代码编写:使用Python调用DeepSeek API实现基础对话功能。 调试与验证:解决常见问题,确保API调用成功。 适合零基础开发者跟随操作,快速入门

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 3738

GDB attach 进程

gdb attach使用

wenwuge_topsec的专栏 1405

Allegro如何用自带的功能将线段变成铜皮操作指导

在做PCB设计的时候,有时根据设计需要将线段变成铜皮,可以借助辅助工具来实现这一操作,但是Allegro自身也自带这个功能,如下图。勾选Delete original objects。如何用自带的功能将线段变成铜皮操作指导。勾选Convert to shape,需要把这段走线变成铜皮。

weixin_54787054的博客 2946

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

gdb 切入进程(attach) 调试

gdb 通过attach 可以直接调试正在运行的进程, 调试完毕后进程可继续运行. 这对调试出现一些偶发性bug时很有用. 步骤: 1. 启动gdb, 进入gdb shell, 命令:  gdb [可执行文件] 2. 切入要调试的进程, 命令:attach [pid] 3. 这时目标进程处于挂起状态, 可以输入一些用来调试命令, 比如break打断点. 命令: b [文件名:行数] 4

Wishion_Wang的专栏 9147

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

gdb attach到已经存在的进程进行在线调试------能获取当前栈的所有变量值!

不久前, 我们玩过valgrind定位程序的各类内存问题, 当时非常希望valgrind能对一个已经存在的进程进行attach在线调试, 后来看了valgrind的原理, 发现这样不可行。 只能让valgrind重新拉取新进程进行调试。 在前面的文章中, 也介绍了kill -6和abort函数, 让程序core dump来获取当时栈的值, 其实, 这样似乎没有必要。 ...

认知 行动 坚持 5万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

gdb attach 2进程

login as: root root@10.1.3.155's password: Last login: Tue Nov  1 15:12:47 2011 [root@localhost ~]# minicom Welcome to minicom 2.1 OPTIONS: History Buffer, F-key Macros, Search History Buffer

247

Linux——gdb调试时多进程切换方法(attach/follow-fork-mode)

当在linux下运行的代码中有创建子进程的操作时,当进行gdb调试时会默认选择父进程进行调试,假如需要对子进程进行调试就需要使用特殊方法。共有两种方法可供选择:这个方式就是当进程运行时,获取进程PID然后在进入gdb调试时,通过attach指令调试PID对用的进程。本质就是指定PID然后调试,并不是真正的进程切换调试。示例代码: 过程如下: mode的可供选择值有两个parent与child,对应父进程与子进程。 这个只能选择fork的第一个子进程作为child进行调试。还是使用上述示例代码,过程如

weixin_61857742的博客 4609

gdb attach 进程 1

login as: root root@10.1.3.155's password: Last login: Tue Nov  1 16:33:05 2011 from 10.1.3.16 [root@localhost ~]# minicom Welcome to minicom 2.1 OPTIONS: History Buffer, F-key Macros, Search

260

gdb attach 进程调试

gdb调试正在运行的进程:GDB可以对正在执行的程序进行调度,它允许开发人员中断程序 并查看其状态,之后还能让这个程序正常地继续执行(gdb)attach xxxxx--- xxxxx为利用ps命令获得的子进程process id(gdb)stop--- 这点很重要,你需要先暂停那个子进程,然后设置一些断点和一些Watch(gdb)break37-- 在resu...

weixin_33721427的博客 1573
上一篇: gcc使用总结
下一篇: linux环境内存分配原理
unix21
博客等级 码龄14年 115粉丝 248原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值