如何在我的程序中检测到它正在调试器下运行?我知道这似乎表明我试图做一些我不应该做的事情,那太乱了。我认为这是一个有趣的问题。具体来说,有没有办法在 POSIX 环境中做到这一点?例如使用 sigaction (2) 来检测是否安装了某些处理程序?更糟糕的想法;是否有一些我可以在 x86 架构上使用的内联汇编代码?
正如我们所讨论的那样——最终是否有可能启动一个调试器,例如 gdb (1),并在您执行此可能的 hack 的地方中断。感谢任何肮脏的单行或不太可能引用与此相关的标准。
最佳答案
是否this article ( archive link ) 帮助?
除其他事项外,它建议:
- 从父进程泄漏的文件描述符
- 环境变量($_)
- 进程状态(
getsid()
等)。
请注意,其中大部分(如果不是全部)依赖于调试器生成正在调试的进程。如果调试器附加到已经运行的进程,它们就不会那么有效。
关于c - 在调试器下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/843252/