【问题标题】:Inspecting variables of running process in C [closed]在C中检查正在运行的进程的变量[关闭]
【发布时间】:2014-08-15 01:43:47
【问题描述】:

谁能帮助我研究一个 uni 项目...

谁能详细说明 GDB 在检查和打印外部进程的变量值时所采取的步骤? C stdlib 在功能上是否包含此功能?

非常感谢

【问题讨论】:

  • 看看这个项目linuxdebugger。有许多小样本可能会对您有所帮助。
  • 这里有一些让你开始的东西:(a) 通过从可执行文件中读取调试信息来找出变量的地址。 eli.thegreenplace.net/2011/02/07/… 描述了如何在现代 Unix 系统上执行此操作 (b) 使用 ptrace 从地址读取。

标签: c debugging gdb elf


【解决方案1】:

您可以查看手册GDB Internals Manual,以及source code

【讨论】:

    【解决方案2】:

    它是特定于操作系统的。在 Linux 上,GDB 会从ELF 可执行文件(使用例如gcc -g 编译)的调试部分读取调试信息(DWARF 格式)。

    然后它将使用一些系统调用(请参阅syscalls(2) 以获取列表),特别是ptrace(2)

    我很惊讶你在这里问。 GDB 是免费软件,你可以研究它的源代码,然后在它的邮件列表中询问。

    【讨论】:

      【解决方案3】:

      在程序运行时监视变量可以通过使用探查器之类的东西来完成,但是程序的运行速度会比正常情况慢得多。对于一些嵌入式或仿真器类型的环境,调试器可以实时监控一些变量。如果只有几个关键变量,则可以使用可以在对这些变量的任何写入时设置观察点的调试器,这只会在这些变量更新时减慢程序的速度。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-02
        • 1970-01-01
        • 2015-06-10
        相关资源
        最近更新 更多