2016-08-31 8 views
1

Я работаю с программой, которая генерирует много кода во время выполнения и, кажется, не производит никаких размольных данных. (У меня нет исходного кода для этой программы, я пишу для него плагин.)Могу ли я отключить сообщение «Невозможно прочитать запись таблицы динамических функций» в WinDbg?

Когда программа зависает, я ворвался в нее с помощью WinDbg и попытался получить трассировку стека для всех потоков с помощью ~* k , А также трассировки стека, я также получаю страницы и страницы (и страницы, и больше) сообщений по линии

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

Это занимает много времени, чтобы напечатать - за минуту - и он переполняется свиток буфера, поэтому я теряю большую часть вывода.

Я работал над этим на данный момент с помощью hex-редактирования библиотеки DLL, содержащей это сообщение, но ... серьезно. Есть ли официальный способ избавиться от этого сообщения?

Я готов к дерьмовой трассировке стека из проблемной нити.

ответ

2

Обратите внимание, что это функция безопасности, поэтому отключить его на свой страх и риск. Есть два варианта:

  • Если вы знаете, какой модуль является причиной этого, вы можете добавить полный путь к регистру: HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ KnownFunctionTableDlls реестра ключ
  • Вы можете отключить это с .settings set EngineInitialization.VerifyFunctionTableCallbacks=false

Второй вариант отключает его только для текущего сеанса. Если вы хотите сделать его постоянным, вы можете следить за ним с помощью .settings save.

+0

. Настройка кажется новой командой. Это documenteed [онлайн] (https://msdn.microsoft.com/en-us/library/windows/hardware/dn925473 (v = vs.85) .aspx), но я не могу найти его в справке WinDbg 6.2. Знаете ли вы, когда это было введено? –

+0

Извините, но я не знаю. – Dono

+0

SO прослушивает меня, чтобы принять ответ, так кто я такой, чтобы спорить? Я был с Windows с тех пор и не успел попробовать, но этот ответ, безусловно, звучит правдоподобно;) –

2

если вы работаете последние версии WinDbg

вы можете попробовать настройки параметров инициализации Engine

0:000> dx Debugger.Settings.EngineInitialization.VerifyFunctionTableCallbacks 
Debugger.Settings.EngineInitialization.VerifyFunctionTableCallbacks     : true 
0:000> dx Debugger.Settings.EngineInitialization.VerifyFunctionTableCallbacks = false 
Debugger.Settings.EngineInitialization.VerifyFunctionTableCallbacks = false : false 
0:000> dx Debugger.Settings.EngineInitialization.VerifyFunctionTableCallbacks 
Debugger.Settings.EngineInitialization.VerifyFunctionTableCallbacks     : false 
+0

dx кажется новой командой. Он документирован [онлайн] (https://msdn.microsoft.com/en-us/library/windows/hardware/dn936815 (v = vs.85) .aspx), но я не могу найти его в справке WinDbg 6.2. Знаете ли вы, когда это было введено? –

+0

См. Здесь: https://channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-138-Debugging-dx-Command-Part-1 и https://channel9.msdn.com/Shows/Defrag- Инструменты/Defrag-Tools-139-Debugging-dx-Command-Part-2. – Dono

+1

@thomas dx был сдвинут в windows 10 sdk/ddk/debugger. (10. ****** 5.8.6) около года назад – blabb