调试动态加载的可执行文件

时间:2011-03-29 14:22:23

标签: visual-studio-2010 visual-studio-debugging

我已经交了一份应用程序来支持,我正在试图弄清楚如何去做。我确实有源代码,可以进行一些更改,但我显然不想完全改变应用程序的体系结构。

该应用程序位于由9个不同项目组成的VS2010解决方案中。主要的是一个Windows窗体应用程序,但它在其他线程中旋转其他人。

这就是困难。即使不同的项目是同一解决方案的一部分,它们也是独立的可执行文件,而不是DLL。当主程序启动其他项目之一时,它通过创建一个新进程,将可执行文件的文件名,启动参数和其他各种参数设置到process.StartInfo对象中,然后调用process.Start()来实现。

如何设置断点并调试从属可执行文件?在加载之前我无法附加它们,但是在调用process.Start()之前它们不会被加载,到那时为时已晚。是否有一个方法调用我可以插入到主程序中以使其在实际开始执行之前加载可执行文件(因此我可以在其中设置断点)?

感谢。

2 个答案:

答案 0 :(得分:0)

您是否可以重新编译其他可执行文件?如果是这样,您是否尝试将DebugBreak放在合适的位置? (或_asm int 3)。

您无法加载进程(非常有用),因为根据定义,它将在启动之前与您正在调试的地址不同的地址运行。

答案 1 :(得分:0)

一个简单的解决方案是将DebugActiveProcess函数的调用添加到参与应用程序的每个进程的“main”函数中。