c - 在调试器下

标签 c debugging gdb posix

如何在我的程序中检测到它正在调试器下运行?我知道这似乎表明我试图做一些我不应该做的事情,那太乱了。我认为这是一个有趣的问题。具体来说,有没有办法在 POSIX 环境中做到这一点?例如使用 sigaction (2) 来检测是否安装了某些处理程序?更糟糕的想法;是否有一些我可以在 x86 架构上使用的内联汇编代码?

正如我们所讨论的那样——最终是否有可能启动一个调试器,例如 gdb (1),并在您执行此可能的 hack 的地方中断。感谢任何肮脏的单行或不太可能引用与此相关的标准。

最佳答案

是否this article ( archive link ) 帮助?

除其他事项外,它建议:

  • 从父进程泄漏的文件描述符
  • 环境变量($_)
  • 进程状态(getsid() 等)。

请注意,其中大部分(如果不是全部)依赖于调试器生成正在调试的进程。如果调试器附加到已经运行的进程,它们就不会那么有效。

关于c - 在调试器下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/843252/

相关文章:

c - 如何设置Win32窗口非客户区的大小(native)

c - 返回值时赋值

c - AND、OR 、XOR 字符串与 127

html - 即使在汉堡菜单上滚动,我如何防止 body 滚动?

gdb - D2和gdb问题

qt - 如何在 Qt Creator (gdb) 中查看返回值

c - 生产者消费者段错误(核心转储)

c - 我如何跟踪内存分配?

android - Android Emulator 可以拾取音频吗?

c++ - Linux jdk1.6.0_25 x64(64 位)中的可能回归