experiment : 使用WinDbg调试远程用户态程序
2013-06-04 16:13
274 查看
使用WinDbg调试远程用户态程序的步骤:
假设这个用户态程序是我们自己的, 有源码~
* 在程序入口处加入等待调试的代码.
* 将用户态目标程序编译成Release版带调试符号, 假设这个PE文件叫 25912.exe
* 用WinDbg链接远程计算机, http://msdn.microsoft.com/en-us/library/windows/hardware/hh451173%28v=vs.85%29.aspx
当第一次被断在系统断点时, 设置好WinDbg的符号路径, PE映像路径, PE源文件路径.
打开25912.c, 在等待调试的代码下面下断点.
输入 g 命令, 全速运行WinDbg
* 将映像文件(25912.exe)拷贝到远程计算机.
运行此用户态程序, 程序运行后, 停在等待调试的代码处.
* 将WinDbg暂停,
用 !process 0 0 列出所有进程, 找到 25912.exe.
确认该进程信息
切换到该进程
重新加载用户态程序符号文件
这时, 可以看到25912.c 中的断点已经变红. 断点生效了~
用 bl 命令将断点列出时, 断点类型 已经变成了 E
非入侵式切换到用户态程序
用 g 命令, 全速运行WinDbg, 等停下来时. 如果没有落在断点上, 继续 g 命令
因为下了等待调试的代码, 需要在用户态程序中执行等待调试结束的动作(回车), 然后就落在了WinDbg的断点上.
然后进行正常的应用层单步调试.
假设这个用户态程序是我们自己的, 有源码~
* 在程序入口处加入等待调试的代码.
* 将用户态目标程序编译成Release版带调试符号, 假设这个PE文件叫 25912.exe
* 用WinDbg链接远程计算机, http://msdn.microsoft.com/en-us/library/windows/hardware/hh451173%28v=vs.85%29.aspx
当第一次被断在系统断点时, 设置好WinDbg的符号路径, PE映像路径, PE源文件路径.
打开25912.c, 在等待调试的代码下面下断点.
输入 g 命令, 全速运行WinDbg
* 将映像文件(25912.exe)拷贝到远程计算机.
运行此用户态程序, 程序运行后, 停在等待调试的代码处.
* 将WinDbg暂停,
用 !process 0 0 列出所有进程, 找到 25912.exe.
PROCESS 857313b0 SessionId: 1 Cid: 0b3c Peb: 7ffd4000 ParentCid: 0750 DirBase: 3efb9540 ObjectTable: 91756858 HandleCount: 21. Image: 25912.exe
确认该进程信息
kd> !process 857313b0 0
PROCESS 857313b0 SessionId: 1 Cid: 0b3c Peb: 7ffd4000 ParentCid: 0750 DirBase: 3efb9540 ObjectTable: 91756858 HandleCount: 21. Image: 25912.exe
切换到该进程
kd> .process /p 857313b0 Implicit process is now 857313b0 .cache forcedecodeuser done
重新加载用户态程序符号文件
kd> .reload /f /user Loading User Symbols ..............
这时, 可以看到25912.c 中的断点已经变红. 断点生效了~
用 bl 命令将断点列出时, 断点类型 已经变成了 E
非入侵式切换到用户态程序
kd> .process /i /p 857313b0 You need to continue execution (press 'g' <enter>) for the context to be switched. When the debugger breaks in again, you will be in the new process context.
用 g 命令, 全速运行WinDbg, 等停下来时. 如果没有落在断点上, 继续 g 命令
因为下了等待调试的代码, 需要在用户态程序中执行等待调试结束的动作(回车), 然后就落在了WinDbg的断点上.
然后进行正常的应用层单步调试.
相关文章推荐
- 生成程序崩溃的dump文件,使用windbg调试
- 使用WinDBG + SOS调试.Net程序的一般步骤
- 使用Windbg内核调试连接调试用户态程序的方法
- windbg 如何再内核模式调试用户空间的程序
- 使用WinDbg调试程序
- 如何用Windbg调试禁止使用调试器的程序
- [转载]使用windbg来调试程序
- windbg 如何再内核模式调试用户空间的程序
- windbg 如何再内核模式调试用户空间的程序
- 在ubuntu10.04成功移植gdbserver及gdbserver使用介绍(用于CCSV5.2远程调试ARM CORTEX-A8程序)
- 使用WinDbg调试程序
- 使用Visual Studio 利用WinGDB编译和远程调试嵌入式Linux的程序
- windbg 如何在内核模式调试用户空间的程序
- 使用Windbg和SoS扩展调试分析.NET程序
- 使用windbg调试托管程序的一些零散经验
- windbg下在kd模式也可以调试用户模式程序
- 使用GDB调试简单的用户程序
- 使用Windbg和SoS扩展调试分析.NET程序
- 使用 PyCharm 远程调试 Django 程序
- windows下使用IDA远程调试linux(ubuntu)下编译的程序