gdb调试正在运行的进程

2023-10-28

http://elisawell.blog.163.com/blog/static/171462881201223061149953/

有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试(正是我今天遇到的情形)。这种情况有可能发生在那些无法直接在调试器中运行的进程身 上,例如有的进程 只能在系统启动时运行。另外如果需要对进程产生的子进程进行调试的话,也只能采用这种方式。GDB可以对正在执行的程序进行调度,它允许开发人员中断程序 并查看其状态,之后还能让这个程序正常地继续执行。

     GDB提供了两种方式来调试正在运行的进程:一种是在GDB命令行上指定进程的PID,另一种是在GDB中使用“attach”命令。例如,开发人员可以先启动debugme程序,让其开始等待用户的输入。示例如下:

#./debugme             Enter a string to count words:


     接下去在另一个虚拟控制台中用下面的命令查出该进程对应的进程号:

# ps -ax | grep debugme             555 pts/1 S 0:00 ./debugme


     得到进程的PID后,就可以使用GDB对其进行调试了:

# gdb debugme 555             GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)             Attaching to program: /home/xiaowp/debugme, process 555             Reading symbols from /lib/libc.so.6...done.             ……


     在上面的输出信息中,以Attaching to program开始的行表明GDB已经成功地附加在PID为555的进程上了。


另外一种连接到其它进程的方法是先用file命令加载调试时所需的符号表,然后再通过“attaché”命令进行连接:

(gdb) file /home/xiaowp/debugme             Reading symbols from /home/xiaowp/debugme...done.             (gdb) attach 555             ……


     如果想知道程序现在运行到了哪里,同样可以使用“backtrace”命令。当然也可以使用“step”命令对程序进行单步调试。

     在完成调试之后,不要忘记用detach命令断开连接,让被调试的进程可以继续正常运行。

--------------------个人总结:

1. 有两种调试正在运行的进程的方法:
1)$ gdb 程序名 进程号
2) 先启动 gdb ,然后使用 attach 命令
    $ gdb
    $ attach 进程号


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gdb调试正在运行的进程 的相关文章

  • Linux下gdb编译调试程序

    Linux下gdb编译调试程序 前言 一 调试前的准备 二 gdb中断点的使用 三 gdb中运行调试程序 四 gdb中打印值和监控值 总结 参考 前言 本文记录调试工具gdb的一些基础使用方式 gdb是一个程序调试工具 注意 如果是程序语法
  • Unix环境编程中的apue.h和err_quit、err_sys问题

    现在开始学习 Unix环境编程 这本书 在学习的时候总会遇到书中的程序编译时会出现问题 所以自己将遇到的问题及解决的方法进行总结 找不到头文件apue h和err qiut err sys 1 apue h是作者自定义的一个头文件 并不是U
  • gdb调试正在运行的进程

    http elisawell blog 163 com blog static 171462881201223061149953 有时会遇到一种很特殊的调试需求 对当前正在运行的其它进程进行调试 正是我今天遇到的情形 这种情况有可能发生在那
  • brk(), sbrk() 用法详解

    http blog csdn net ssjhust123 article details 7772153 brk sbrk 的声明如下 cpp view plain copy include
  • Linux 查看进程和线程CPU和内存占用情况

    文章目录 Linux 查看进程有哪些线程 Linux 查看程序内存占用情况 top和free等命令 Linux 查看进程 线程数量 Linux 查看进程有哪些线程 linux 下查看进程内的线程有哪些 首先通过进程名称 假设为SensorD
  • 检验IP地址有效性

    使用inet aton函数
  • linux stat函数讲解

    原文地址 http www cnblogs com hnrainll archive 2011 05 11 2043361 html 表头文件 include
  • rpm 安装时提示缺少依赖库

    在麒麟系统下安装ecryptfs utils 82 6 ky3 3 x86 64 rpm 该软件包在 麒麟光盘的 KYLIN目录下 使用如下命令 rpm ivh ecryptfs utils 82 6 ky3 3 x86 64 rpm 提示
  • Linux中确认两份文件内容是否相同的方法:MD5值

    什么是MD5值 MD5 信息摘要算法 一种被广泛使用的密码散列函数 可以产生出一个128位 16字节 的散列值 hash value 用于确保信息传输完整一致 可以说是文件的唯一ID 可以根据MD5值去判断文件是否完整或者两个文件是否完全一
  • linux glob函数man页与实例

    Linux Programmer s Manual NAME glob globfree find pathnames matching a pattern free memory from glob SYNOPSIS include
  • 线程的同步和互斥

    线程的同步和互斥题目 题目 设计生产者与消费者模型 缓冲区是一个大小为10的环 每个生产者产生一个0 1000的随机整数 存放在环空位中 消费者从环中取数据 并输出 一个生产者或消费者对应一个线程 要避免 1 两个生产者同时向环的同一个位置
  • 自己实现ls-l命令

    include
  • 生产者与消费者模式(线程的同步与互斥)

    条件变量 条件变量的提出首先要涉及一个概念 就是生产者消费者模型 生产者消费者 是在多线程同步的一个问题 两个固定大小缓冲区的线程 在实际运行是会发生问题 生产者是生成数据放入缓冲区 重复过程 消费者在缓冲区取走数据 生产者消费者的模型提出
  • linux查看、添加、删除环境变量

    阅读目录 一 Linux 环境变量介绍 1 1 Linux 环境变量介绍 1 2 Linux 环境变量分类 1 3 Linux 常用的环境变量 二 Linux 查看环境变量 三 Linux 添加环境变量 3 1 添加系统级环境变量 需roo
  • 学习linux内核的经典书籍介绍

    有关内核的书籍可以用汗牛充栋来形容 不过只有一些经典的神作经住了考验 首先是5本久经考验的神作 个人概括为 2 1 2 第一个2是指2本全面讲解内核的书 中间的1指1本讲解驱动开发的书 后面的2则指2本有关内核具体子系统的书 你是否想到了某
  • 学习GDB

    http blog csdn net blueboy82006 article details 5586109 学习使用 GNU GDB Debugger 作者 王聪 GDB 常用命令参考手册 GDB 命令行参数 GDB 命令 GDB 操作
  • Linux文件编程常用函数详解——read()和write()函数

    read 函数 include
  • 使用truss、strace或ltrace诊断软件的"疑难杂症"

    作者 李凯斌 2005 01 18 11 03 24 来自 IBM DW中国 进程无法启动 软件运行速度突然变慢 程序的 Segment Fault 等等都是让每个Unix系统用户头痛的问题 本文通过三个实际案例演示如何使用truss st
  • slect( )、poll( )、epoll( )函数详解

    1 slect 函数 1 1 函数原型 include
  • gcc搜索动态链接库的路径优先级排序

    GCC运行时 Linux动态链接库的搜索路径按优先级排序为 1 编译目标代码时 Wl rpath 指定的动态库搜索路径 当指定多个动态库搜索路径时 路径之间用冒号 分隔 2 环境变量 LD LIBRARY PATH 指定的动态库搜索路径 3

随机推荐

  • python: 运行import tensorflow as tf 出错讯息的解决,CUDA版本查看方法

    Tensorflow 由 Google Brain 开发和维护 广泛应用于各类机器学习machine learning 最近想试用一下 在pycharm上用Python 结果一开始就出问题了 第一句 import tensorflow as
  • 剑指 Offer 52. 两个链表的第一个公共节点(java+python)

    输入两个链表 找出它们的第一个公共节点 如下面的两个链表 在节点 c1 开始相交 示例 1 输入 intersectVal 8 listA 4 1 8 4 5 listB 5 0 1 8 4 5 skipA 2 skipB 3 输出 Ref
  • 时间复杂度分析

    目录 前言 最好 最坏情况复杂度 平均情况时间复杂度 均摊事件复杂度 总结 前言 本文作文学习极客时间课程 数据机构与算法之美 课程的一些笔记与感悟 有兴趣的朋友希望大家关注课程 非常好的课程 不要惧怕数据结构与算法 当你学完整篇专栏 会对
  • 01背包--数组能否分成两个和相同的数组

    1 2 6 3 可以分成 1 2 3 和 6 思路 此题可以用0 1背包问题来解决 分成的两个数组之和 一定为整个数组之和的一半 所以将背包容量设为初始数组之和的一半即可 最后在判断背包所装的容量是不是整个数组之和的一半 关于01背包问题的
  • python 中字典对象按照 value 排序

    dit 1 a 1 b 2 c 2 d 直接使用sorted方法 只能根据key进行排序 sorted dit Out 6 2 1 1 2 如果需要根据value排序 可以 sorted dit items key lambda x x 1
  • 【计算机网络】3、IO 多路复用:select、poll、epoll、reactor

    文章目录 一 select 1 1 用法 1 1 实战 二 poll 2 1 用法 2 2 实战 三 阻塞 非阻塞 3 1 非阻塞 IO 3 1 1 read 3 1 2 write 3 1 3 accept 3 1 4 connect 3
  • 关于Lattic Diamond软件安装不成功问题(license问题)

    今天搞了一上午的软件 都快放弃了 最后发现竟然是环境变量的问题 顿时感觉自己太费了 这么简单都没发现 正常按照教程安装完显示的结果应该是这样的 这时候报错是因为还没有安装license 这个教程里也有 一步步来就行 但是要吐槽的一点就是这个
  • C语言初学者必学必会的C语言必背100代码

    对于C语言这门计算机语言 算是老生常谈了 现在就由我来给大家分享几个关于C语言的几个代码吧 如果有错的地方还望见谅 1 入门级别hello world include
  • 【ES6】let、const、var详解

    let let用于声明变量 特点 1 let不能重复声明变量 2 let声明的变量不会变量提升 3 let声明的变量不属于顶层对象 4 let声明的变量具有块级作用域 let生成了对应的块状作用域 找到i值 let arr for let
  • 解决“至少有一个JAR被扫描用于TLD但尚未包含TLD”的问题

    一 问题描述 26 Aug 2020 18 52 00 419 信息 RMI TCP Connection 3 127 0 0 1 org apache jasper servlet TldScanner scanJars 至少有一个JAR
  • 微服务的优点

    在这里插入图片描述 1 简而言之 微服务就是开发一组小型服务的方式来开发一个独立的应用系统 每个小型服务都运行在自己的进程中 并采用HTTP资源API轻量级的机制来互相通信 这些服务围绕业务功能进行构建 并能通过全自动的部署机制来进行独立部
  • 虚拟机隔离和容器隔离机制及区别

    1 虚拟机隔离机制 通过虚拟化技术虚拟出资源完全独立的的主机 支持虚拟化的层是hypervisor hypervisor是一种虚拟化服务器的软件 2 Docker容器的隔离机制 Docker利用Namespace实现系统环境隔离 采用Cgr
  • 十进制小数转换成二进制的原理理解

    十进制小数转换成二进制的原理理解 在学习浮点数据类型的时候 涉及到了10进制的小数如何转成2进制数的问题 此文章不讨论精度问题 仅涉及转换原理 乘2取整 学习到的方法是 乘2取整 但是一直不知道具体原理是什么 现在从数学上说明一下原理 乘2
  • 你真的了解Python吗?这篇文章可以让你了解90%

    人们为什么使用Python 之所以选择Python的主要因素有以下几个方面 软件质量 在很大程度上 Python更注重可读性 一致性和软件质量 从而与脚本语言世界中的其他工具区别开发 此外 Python支持软件开发的高级重用机制 例如面向对
  • phpstorm 实现SFTP开发,线上线下同步(实时更新代码)

    phpstrom是一个功能非常强大的IDE 甚至在修改SFTP项目时 不需要使用FTP软件将项目download到本地 修改后再提交到服务器覆盖的传统方式 就能做到远程动态连接和修改 非常方便十分适合开发微信项目 1 打开工具栏 Tools
  • 荣耀8 android8.0 2018,荣耀手机EMUI8.0+ Android8.0最新适配计划

    官方活动 荣耀手机EMUI8 0 Android8 0最新适配计划 3941603381 电梯直达 荣小耀同学 天下无双 发表于 2018 3 20 10 06 16 来自 浏览器 最新回复 2020 6 6 19 29 29 亲爱的花粉
  • 离线安装vscode server以及免密登录

    背景 代码服务器通常是无网状态 并且普通用户的权限很低 无法在服务器中安装vscode软件 而我们又想要用vscode编辑器 此时应该怎么办 首先 我们需要在本地安装vscode 其次 当代码量不大 我们可以考虑用samba的方式 在电脑中
  • 微信小程序自带的referer (附:微信,头条,支付宝,百度小程序的自带referer)

    背景 一个获取列表信息的接口 在我在浏览器可以正常获取数据 但小程序的接口返回失败 1invalid request 定位问题 在CGI中有域名白名单校验 checkhost 函数会校验请求头中的referer字段的域名是否在白名单中 白名
  • Java从天气网爬取历史天气数据

    private static String URL http lishi tianqi com private static String BaseURL http www tianqi com public static Map
  • gdb调试正在运行的进程

    http elisawell blog 163 com blog static 171462881201223061149953 有时会遇到一种很特殊的调试需求 对当前正在运行的其它进程进行调试 正是我今天遇到的情形 这种情况有可能发生在那