MSDN中关于如何设置调试会话的描述。
设置过程是:
- 设置 2 台 PC,第一台带有您的开发环境,第二台是调试目标。(Vista+Vista64 最适合我)
- 使用 Firewire 电缆或 Null-Modem 电缆设置调试器连接。(Null-Modem 几乎总是有效,但从性能的角度来看,Firewire 更好。USB 很贵,而且对我来说开箱即用不是...)
- 设置目标计算机以“调试”模式启动MSDN
- 让 WinDbg 运行并等待内核连接,以调试模式启动目标计算机。
- 启动时,WinDbg 应该打印有关目标系统的消息。在这里您将看到 DbgPrint 消息等。(所有 DbgPrint 在 Vista 中默认禁用(不是在 XP 中),您必须启用它链接)
- 您可以通过定义断点在 WinDbg 中的模块中设置断点。
PS:bcdedit 有时无法设置调试模式。我不知道为什么。但是似乎有一定的顺序,你必须告诉它调试参数。尝试不同的组合确实可以创造奇迹......
当你闯入进程时,你可以在 WinDbg 中使用命令。几个有趣的:
- lm显示当前加载的所有模块
- lm m 模式显示所有满足搜索条件的模块(例如“lm m kernel32*”
- x module_name!function_name_pattern列出模块中的符号(例如“kernel32!Create*”)
- bl列出所有当前设置的断点
- bp module_name!function_name在指定函数的开头设置断点。
- bc * 删除所有断点
- .hh bp显示“bp”的帮助
- .reload /u x.sys重新加载 x.sys 模块调试设置。(当您想要重建项目并收到“无法创建 x.pdb ...”消息时,这很有帮助)。
在 Vista 下启用所有 DbgPrint 输出:
enable_dbg_print_vista.reg
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter]
"DEFAULT"=dword:0000000f