如何在程序启动的时候将调试器附加上去

来源:互联网 发布:99乘法表算法 编辑:程序博客网 时间:2024/04/30 17:28
 

可能有人会对这个问题有一些争议,因为大部分情况下我们只需要在调试器(Debugger)里面直接启动被调试程序(Debuggee)就可以在程序启动前调试程序了。

但有些情况下,你是不能控制被调试程序(Debuggee)在什么时候启动的。例如在DCOM环境里面,DCOM客户端(Client)可以通过调用CoCreateInstanceEx(…, CTX_LOCAL_SERVER, …)启动DCOM服务器(Server),启动DCOM服务器的过程是在COM库中进行的, 你没有办法将在DCOM服务器的WinMain函数之前将你的调试器附加(Attach)上去。Windows提供了一个功能就是在一个程序启动的时候,自动将设置好的调试器附加到这个新启动的程序上去。这里我就是要介绍这个功能:

1.         打开注册表编辑器(regedit.exe.

2.         找到键值HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options/

3.         新建一个键(Key),键名就是你要调试的程序的文件名,例如notepad.exe

4.         然后在这个新建的键值(Key)下,在我们的例子里,这个键值是notepad.exe。新建一个字符串值(String ValueDebugger,值设置为你喜欢的调试器,例如c:/debuggers/windbg.exe

你可以用下面的注册表脚本完成上面的工作:

Windows Registry Editor Version 5.00

 

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options/notepad.exe]

"Debugger"="c://debuggers//windbg.exe"

 

设置好了以后,运行notepad.exe看看有什么结果?

原创粉丝点击