调试 其他由其他程序启动的EXE程序--方法
2008-10-13 21:09
267 查看
在某些情况下,你可能需要调试一个由其他程序所启动的进程的启动代码,而这个过程并不由你所控制。比较典型的例子有COM进程外服务器和Windows Service。
通常你可以在代码中手动加上DebugBreak API调用来自动启动调试程序,大部分情况这都能工作。
不过,某些情况下DebugBreak会不起作用。有可能该断点异常被SEH所截获(COM服务器的情况下)或者在调试器启动的这段时间内有可能导致TimeOut(Windows Service的情况下),因此需要一种另外的方法,如下:
1. 打开RegEdit
2. 找到HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution options
3. 在该键下面新建一个Key,名称为你的程序名,如myprogram.exe
4. 在新建的key下面新建一个String,名称为Debugger
5. 把Debugger的值修改为vsjitdebugger.exe(Visual Studio的JIT Debugger),或者其它你喜欢的Debugger,比如WinDbg等等。注意如果有必要的话,请将该调试器的目录加入到Path中
经过如此设置之后,以后当你每次启动myprogram.exe的时候,你所指定的调试器便会自动启动,开始调试。
通常你可以在代码中手动加上DebugBreak API调用来自动启动调试程序,大部分情况这都能工作。
不过,某些情况下DebugBreak会不起作用。有可能该断点异常被SEH所截获(COM服务器的情况下)或者在调试器启动的这段时间内有可能导致TimeOut(Windows Service的情况下),因此需要一种另外的方法,如下:
1. 打开RegEdit
2. 找到HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution options
3. 在该键下面新建一个Key,名称为你的程序名,如myprogram.exe
4. 在新建的key下面新建一个String,名称为Debugger
5. 把Debugger的值修改为vsjitdebugger.exe(Visual Studio的JIT Debugger),或者其它你喜欢的Debugger,比如WinDbg等等。注意如果有必要的话,请将该调试器的目录加入到Path中
经过如此设置之后,以后当你每次启动myprogram.exe的时候,你所指定的调试器便会自动启动,开始调试。
相关文章推荐
- windows服务程序调试方法 - 启动直接进入调试
- C# 使用 Environment.GetCommandLineArgs 方法 制作*.exe和参数 供其他程序调用
- Linux内核启动-从hello world说起(含程序调试方法)
- VS2017 启动调试出现 无法启动程序“http://localhost:15613” 操作在当前状态中是非法的。 同时附加进程也是错误的解决方法
- Android adb.exe程序启动不起来 具体解决方法
- C# 使用 Environment.GetCommandLineArgs 方法 制作*.exe和参数 供其他程序调用
- 关于本地程序启动其他程序的方法
- vs 2008 调试的时候,任务管理器进程会有个*你的程序名.vshost.exe类似的进程结束不了的解决方法
- Android adb.exe程序启动不起来 具体解决方法
- exe程序作为WINDOWS服务显示界面启动方法
- Android adb.exe程序启动不起来 具体解决方法
- 在WIN10系统下运行VS2013编译成功后出现:无法启动程序“.exe” 系统找不到指定文件的问题的解决方法
- VS调试C++程序,提示无法启动程序,“...exe”。系统找不到指定文件
- Android adb.exe程序启动不起来 具体解决方法
- VS调试C++程序,提示无法启动程序,MSVC\../../bin\caffe.exe系统找不到指定的文件
- MFC笔记 启动其他外部exe程序实现
- Android adb.exe程序启动不起来 具体解决方法
- 在VC中启动另外一个程序(.exe、...)方法
- 在MFC程序中启动其他的exe程序
- vs 2005调试程序是出现无法在web服务器上启动调试,调试失败的解决方法。