我正在尝试通过ShellExecute()
API调用启动应用程序。该应用程序仅包含一个主要功能,可以进行一些处理和退出。
现在我已将DebugBreak()
放在main
的开头。调用ShellExecute()
时,应用程序成功启动,但不会要求中断。
如何使用ShellExecute()
从其他应用程序启动时调试我的应用程序?
我正在使用VC ++。
答案 0 :(得分:1)
如果DebugBreak()不适合您,请尝试_CrtDbgBreak()。请注意,_CrtDbgBreak仅适用于调试版本。
_CrtDebugBreak绝对适合我在启动时启动进程,虽然我很确定DebugBreak也可以。
请注意,这两个函数都会使进程崩溃,因为它们会引发异常。这是正常的,让您有机会通过崩溃对话框附加调试器。 (崩溃对话框还允许您终止进程;显然不要使用它。)
另请注意,如果你的main周围有一个全能的SEH异常处理程序,那么DebugBreak&朋友将被吞没,应用程序将退出而不显示崩溃对话框或让您附加到它。
答案 1 :(得分:0)
你不能用VC ++做到这一点;使用WinDbg调用所有子进程只需要.childdbg 1
。使用VC ++,可以使用图像文件执行选项 - 请查看http://codereflect.com/2009/09/20/how-to-debug-child-process-using-windbgvisual-studio/以获取更多信息。实际上,如果你有时间学习WinDbg,那就更好了。
答案 2 :(得分:0)
你可以试试这个,在xp系统中没问题。
app.exe是您的应用程序名称,
-s1 ...- s3是命令行参数。
HINSTANCE hRet = ShellExecute(NULL,L“open”,L“vsjitdebugger.exe”,L“app.exe -s1 a1 -s2 a2 a3 -s3”,szExePath,SW_SHOW);
答案 3 :(得分:0)