我是使用 Windbg 的新手。我得到了我的应用程序的崩溃转储。使用 Windbg 我可以获得崩溃的调用堆栈,并发现 dynamic_cast 因指针而失败。由于指针已经损坏,dynamic_cast 失败。
现在我不确定这个指针是如何损坏的。它可能来自另一个线程。如何找出相同指针已损坏的其他线程的调用堆栈。
或者
使用损坏指针的其他线程的调用堆栈。所以我应该分析指针损坏的原因。
我是使用 Windbg 的新手。我得到了我的应用程序的崩溃转储。使用 Windbg 我可以获得崩溃的调用堆栈,并发现 dynamic_cast 因指针而失败。由于指针已经损坏,dynamic_cast 失败。
现在我不确定这个指针是如何损坏的。它可能来自另一个线程。如何找出相同指针已损坏的其他线程的调用堆栈。
或者
使用损坏指针的其他线程的调用堆栈。所以我应该分析指针损坏的原因。
您可以转储所有线程的调用堆栈:
~* kb
然后扫描调用堆栈以查找指针的地址,假设另一个线程正在尝试访问它,当我说扫描时,这意味着使用f3.
此外,如果您有很多工作线程,那么!uniqstack
只会列出唯一的调用堆栈并列出具有该调用堆栈的线程 ID。请记住,当您想查看其他线程时,您需要通过调用来切换线程,这里~#s
有更多关于语法的信息。