Sysinternals工具包
VS
VS远程调试
- 在VS安装的目录下,从Remote Debugger这个文件夹中,拿到x86或x64
- 在待调试环境中,管理员权限打开msvsmon.exe
- 无身份验证,允许任何用户进行调试
- 在调试环境中:
- 附加到进程
- 远程
- 选择连接模板
- 选择要调试的目标进程
VS调试Release
- 调试信息格式
/Zi
- 优化
/Od
- 生成调试信息
/DEBUG
调试Lib
- 进程管理器
- 启动exe后,在进程管理器中选择exe
- 右击exe,选择debug,选择Visual Studio
- lib工程调试命令
- 在工程属性中-调试-命令
- 添加使用了该lib的exe的path
调试Dll
- 启动调用了目标dll的exe
- dll工程-调试-附加到进程-选择对应exe
VS2005调试DLL时发现的问题
- 需要在调试环境中用管理员权限启动VS2005
- 需要关掉待调试环境的防火墙
Debug View
模块介绍
问题
- 无输出的情况
- 管理员身份启动dbgview
- 以开始执行(不调试)方式启动要查看输出信息的应用程序。
使用
- 捕捉Release模式的Win32程序输出的调试信息,请选中“Capture Global Win32”选项
- 只有调用了WinDebug中的方法输出的Debug打印信息才能被Debugview捕获
- 如果是qt工程可以使用qDebug()添加打印,使用debugview进行查看。
- 在程序中用OutputDebugStringA即可将信息输出到DebugView。
调试服务程序
现象
- 服务是随系统起来的,起来的比较快,有时当虚拟机里面的服务进程起来后,在打开远程调试,再本地附加进程
- 可有可能,当我们附加进程的时候,要打断点的地方已经跑完了
思路
- 写一个messagebox让它阻塞住,就像之前远程调试普通的进程一样
- 但是不可行
- 因为这样Messagebox虽然会把服务阻塞住,但是它是不会显示出来那个messagebox的框的,这样的话,点不了,也就无法让它断到下一步
解决
- 在服务管理器里面找到对应的服务,设置允许服务与桌面交互
- 使用服务的方式来弹messagebox。
本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ Soui七06/02
- ♥ Soui二05/18
- ♥ Windows 核心编程 _ 用户模式:线程同步一07/15
- ♥ Soui六06/01
- ♥ WTL 概述03/10
- ♥ Windows 核心编程 _ 内核对象:同步异步设备IO08/24