Visual Studio Debug下的Attach Process是什么原理
发布网友
发布时间:2022-04-23 19:04
我来回答
共2个回答
热心网友
时间:2022-04-08 12:48
Windows提供一套公共的API用于调试程序,也就是说你也可以自己写一个调试软件,调用这些API实现跟VS一样的功能。并且现有的软件里,很多调试器都支持attach to process的功能。
在Windows环境下,一个进程要debug另一个进程,在权限足够的情况下,有两种debug方式:
1、启动进程并debug(像一般VC那样);
2、直接attach到一个正在运行的进程上;
第一种模式:
创建进程(CreateProcess)时,在dwCreationFlags里加上DEBUG_PROCESS标志位
参见:
CreateProcess function (Windows)
Process Creation Flags (Windows)
进程创建以后就会停下来,等父进程调试它。
第二种模式:
直接attach到目标进程,使用DebugActiveProcess就可以了,参见:DebugActiveProcess function (Windows)
所以,Windows已经把所有你需要的工作都准备好了,至于自己是想做一个GUI还是命令行(比如gdb那种),完全就看自己的喜好。
热心网友
时间:2022-04-08 14:06
这是Windows提供的功能,Visual Studio只是给你做了个GUI而已。你要是看完了MSDN关于怎么写Debugger的那一章的话,你也可以自己写一个。
对于普通的debugger来说,最麻烦的也就是配合pdb出结果了,读pdb的话Visual Studio自己带有一个dll给你用。