我可以生成附加到正在运行的调试器的进程吗?
Can I spawn processes attached to a running debugger?
假设我有一个程序生成一些进程(伪代码)
main() {
p1 = Spawn( "ClientProcess" );
WaitForEventFrom( p1 );
}
是否有可能检测'main'是否附加到调试器,并自动将该调试器附加到客户端进程?
附加问题:不改变源代码/可执行文件就能做到吗?
(注意:我在windows上,使用VS2010。但是任何(像样的)调试器都可以
可以使用IsDebuggerPresent()来判断main()是否正在调试
但是,你不能将VS调试器重定向到从已调试的进程中取消附加或重新附加到派生进程。
我能想象的最好的是生成一个新的vs实例,试图将它附加到clientprocess。生成windbg并将其附加到ClientProcess可能会更容易,因为命令行支持pid等。
如果应用程序正在远程调试(CheckRemoteDebuggerPresent()返回true),这显然也不起作用,因为你需要从远程系统启动和附加。问题太多了…
相关文章:
- 为什么我的程序无法在GDB在线编译器/调试器或Visual Studio C++ 2019中运行
- 在集成终端上运行vscode lldb调试器时,如何获取程序的输出?
- 获取stacktrace for Crash,而无需在调试器中运行该应用程序
- C++应用程序仅在使用本地 Windows 调试器时运行,而不是哪个 exe 文件
- QT项目在配置文件上崩溃,与发布和调试器一起运行
- 运行调试器Visual Studio时ARGV中的路径
- 运行自定义调试器 JAVA
- 在内部和外部与调试器之间运行有什么区别
- 运行绿山调试器时的幻像输入
- Visual Studio调试器失败,但程序在生成时运行良好.
- 为什么在VS 2010 C++中,我的程序在调试器中运行良好时会崩溃,但在没有调试器的情况下运行时会崩溃
- XCode调试器lldb中断,没有错误输出,但程序运行良好
- 运行时错误,当我运行程序,但当我使用调试器时没有
- 在调试器外部运行时发布生成更改行为
- 本地窗口调试器已替换为附加,无法运行和调试我的程序
- 我的窗口未在调试器中运行时无法正确绘制
- 如何通知调试器运行时链接的 DLL 文件的位置
- Eclipse在运行调试器时破坏了带有空格字符的程序参数
- 多项式类在调试器中运行良好,但在尝试构建和运行时则不然
- C++/opengl应用程序在附加调试器的情况下运行更流畅