Windows基础调试器

Windows基础调试器

ID:37901012

大小:39.00 KB

页数:3页

时间:2019-06-02

Windows基础调试器_第1页
Windows基础调试器_第2页
Windows基础调试器_第3页
资源描述:

《Windows基础调试器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Windows基础调试器(BASICDEBUGGER)Windows提供了许多调试程序的方法.其中一个叫BasicDebug.提供了基础调试方法.他是一个事件驱动的调试方法.提供了简单调试功能.所谓事件驱动就是在相关调试事件发生时给调试器发送相关事件并由调试器对该事件采取适当的动作.  下面就来看看如何创建一个基础调试器.有两种方式运行基础调试器.1.其中一个方法是调试正在运行进程.要对运行中的进程进行调试,可以通过调用DebugActiveProcess,并指定进程标识(PID).要得到进程I

2、D可以调用 EnumProcesses or Process32First 两个函数.  DebugActiveProcess 将调试器附加到目标进程.这样就只能调试所附加的进程而不能调试子进程. 调试器必须有适当权限来执行 DebugActiveProcess.要得到更多权限控制可参阅权限控制( AccessControl ). 在调试器创建或附加到所要调试的目标进程后,系统将目标进程(如果指定子进程也包括在内)发生的所有相关事件发送到调试器.要了解更多的调试事件可参考 DebuggingEv

3、ents. 要分离调试进程,调试器调用 DebugActiveProcessStop 函数.  调试函数声明BOOLWINAPIDebugActiveProcess(__inDWORD dwProcessId );dwProcessID指定进程PID如果执行成功返回非0,否则错误返回0,要获取更多错误信息,执行GetLastError.要停止调试,你只要退出被调试的进程,或者调用 DebugActiveProcessStop 函数. 退出调试器同样退出被调试进程,除非你调用了 DebugSetP

4、rocessKillOnExit 函数.调试器必须对目标进程有相应权限,并且能对打开的进程具有PROCESS_ALL_ACCESS权限. Windows Me/98/95上, 如果目标进程PID有效,调试器就有适当权限.其他版本Windows,如果目标进程使用了安全描述符,调试器如果没有FullAccess,调用DebugActiveProcess 将失败.如果调试进程具有SE_DEBUG_NAME权限并启用,它就能调试任何进程。系统检测完进程PID,并确认调试器有效后。函数DebugActiv

5、eProcess返回TRUE. 然后调试器调用 WaitForDebugEvent 函数来等待事件。这里要注意,DebugActiveProcess WaitForDebugEvent DebugActiveProcessStop 这三个函数要在同一个线程运行系统暂停被调试进程中的所有线程,并给调试进程发送被调试进程的当前状态。系统发送一个CREATE_PROCESS_DEBUG_EVENT调试事件表明指定进程.  CREATE_PROCESS_DEBUG_INFO的lpStartAddress

6、成员为NULL 进程中的每个线程,系统发送一个CREATE_THREAD_DEBUG_EVENT事件。  CREATE_THREAD_DEBUG_INFO的lpStartAddress成员为NULL目标进程地址空间加载的每一个动态库(DLL),系统将发送一个LOAD_DLL_DEBUG_EVENT调试事件。 系统将安排给第一个线程一个断点,当恢复运行时将停在那。当所有这些都完成后,系统恢复运行所有的线程。并执行断点引发一个EXCEPTION_DEBUG_EVENT调试事件。  然后其它调试事件将

7、陆续发送到调试器。函数要求指引系统要求RequiresWindows Vista,Windows XP,Windows 2000Professional,Windows NTWorkstation,Windows Me,Windows 98,orWindows 95.服务器版本RequiresWindowsServer 2008,WindowsServer 2003,Windows 2000Server,orWindows NTServer.头文件DeclaredinWinbase.h;incl

8、udeWindows.h.链接库UseKernel32.lib.动态库RequiresKernel32.dll.2.另外一个方法是使用CreateProcess函数创建要调试的进程,并给创建标记(CreateFlag)设置为DEBUG_PROCESS 如果不想接受被调试进程子进程调试消息可添加标记DEBUG_ONLY_THIS_PROCESS,即设置创建标记为DEBUG_ONLY_THIS_PROCESS

9、DEBUG_PROCESS

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。