gpt4 book ai didi

windbg - 使用 windbg 仅捕获第二次机会异常

转载 作者:行者123 更新时间:2023-12-02 09:32:28 25 4
gpt4 key购买 nike

我需要调试在 Windows 上运行的正在运行的程序。它有时会因“内存访问冲突”而崩溃。

使用 windbg(无法使用 IDE)我附加到正在运行的进程(这是程序不得停止的要求)

命令行是

windbg -g -p <pid>

问题是我现在捕获了所有第一次机会异常,但我只对任何第二次机会异常感兴趣(不关心哪种类型的异常)。

我如何设置 windbg 以捕获任何第二次机会异常?

最佳答案

默认情况下,WinDbg 会捕获第二次机会异常,因此您只需关闭第一次机会异常即可。对单一类型的异常执行此操作很简单:

0:000> sxd av
0:000> *** Check the setting
0:000> .shell -ci "sx" find "av"

参见 set all exceptions将所有异常类型设置为仅第二次机会。

由于在调试时执行这些命令似乎不是一个选项,您还可以尝试配置一个禁用异常处理的工作区,然后重新使用该工作区。要了解工作区的概念,请参阅 MSDN 文章 Uncovering how Workspaces work真的很有帮助。这是一组你应该自己做一次的实验。

有了这些背景知识,附加到任何过程

0:000> .foreach(exc {sx}) {.catch{sxd ${exc}}}
0:000> *** perhaps some other useful workspace relevant commands here
0:000> *** e.g. .symfix seems useful
0:000> *** File / Save Workspace As ...
0:000> *** Enter a name, e.g. myworkspace
0:000> q

使用 -W myworkspace 命令行开关重新启动 WinDbg。附加到任何进程。检查您的设置是否已应用(例如 sx.sympath)。如果一切正常,您可以开始调试。

关于windbg - 使用 windbg 仅捕获第二次机会异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31431674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com