我可以禁用“无法读取动态函数表条目"吗?WinDbg 中的消息? [英] Can I disable the "Unable to read dynamic function table entry" message in WinDbg?

查看:13
本文介绍了我可以禁用“无法读取动态函数表条目"吗?WinDbg 中的消息?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用一个在运行时生成大量代码的程序,并且似乎没有为其生成任何展开数据.(我没有这个程序的源代码;我正在为它编写一个插件.)

I'm working with a program that generates a lot of code at runtime, and seems not to produce any unwind data for it. (I don't have source code for this program; I'm writing a plugin for it.)

当程序挂起时,我使用 WinDbg 进入它,并尝试使用 ~* k 获取所有线程的堆栈跟踪.除了堆栈跟踪外,我还沿着

When the program hangs, I break into it with WinDbg, and try to get a stack trace for all threads with ~* k. As well as the stack traces, I also get pages and pages (and pages, and more) of messages along the line of

Unable to read dynamic function table entry at 00000000`2450b580

这需要很长时间来打印 - 超过一分钟 - 并且它溢出了滚动缓冲区,所以我丢失了大部分输出.

This takes a long time to print - over a minute - and it overflows the scroll buffer, so I lose most of the output.

我现在已经通过十六进制编辑包含此消息的 DLL 解决了这个问题,但是……说真的.有没有官方的方法来摆脱这条消息?

I've worked around this for now by hex-editing the DLL that contains this message, but... seriously. Is there an official way of getting rid of this message?

我准备好从问题线程中获得糟糕的堆栈跟踪.

I'm prepared for a crappy stack trace from the problem thread(s).

推荐答案

请注意,这是一项安全功能,因此您需要自行承担禁用它的风险.有两种选择:

Note that this is a security feature, so disable it at your own risk. There are two options:

  • 如果您知道哪个模块导致了这种情况,您可以将完整路径添加到注册表:HKLM\Software\Microsoft\Windows NT\CurrentVersion\KnownFunctionTableDlls 注册表项
  • 您可以使用 .settings set EngineInitialization.VerifyFunctionTableCallbacks=false 禁用它

第二个选项仅在当前会话中禁用它.如果你想让它永久化,你可以用 .settings save 跟随它.

The second option only disables it for the current session. If you want to make it permanent, you can follow it with .settings save.

这篇关于我可以禁用“无法读取动态函数表条目"吗?WinDbg 中的消息?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆