Debugging WinDbg可以看到的模块数量是否有上限?

Debugging WinDbg可以看到的模块数量是否有上限?,debugging,windbg,Debugging,Windbg,有人知道WinDbg能看到的DLL数量是否有上限吗?我相信VisualStudio曾经被限制在500,但除了一些工作中的二手账户之外,我找不到其他来源 我正在调试一个复杂的场景,WinDbg的堆栈跟踪不完整。根据Process Explorer,我感兴趣的模块已加载,但它没有显示在WinDbg中“lm”的输出中 令人怀疑的是,据说输出正好有500个模块长,尽管我知道加载的模块远不止这些,这让我相信WinDbg不会看到超过前500个的DLL。有人能证实吗?或者提出加载的模块可能不会显示在“lm”中

有人知道WinDbg能看到的DLL数量是否有上限吗?我相信VisualStudio曾经被限制在500,但除了一些工作中的二手账户之外,我找不到其他来源

我正在调试一个复杂的场景,WinDbg的堆栈跟踪不完整。根据Process Explorer,我感兴趣的模块已加载,但它没有显示在WinDbg中“lm”的输出中

令人怀疑的是,据说输出正好有500个模块长,尽管我知道加载的模块远不止这些,这让我相信WinDbg不会看到超过前500个的DLL。有人能证实吗?或者提出加载的模块可能不会显示在“lm”中的其他原因


编辑:经过进一步调查,我能够通过在加载模块之前附加调试器,让WinDbg加载所需的模块


在我看来,在连接到进程时,调试器引擎将只看到前500个DLL,但将正确处理后续加载。我仍然希望得到WinDbg专家的确认,或者更好的是,在连接时绕过500多个模块

由于模块列表中的损坏,我已过期windbg未显示所有模块。 下面是我在32位xp用户转储上使用的脚本(在Windbg帮助文件中找到)。 查找lm输出中未找到的模块时。 你也可以试试这个!windbg中的DLL

    $$ run with:  $$>< C:\DbgScripts\walkLdr.txt
    $$
    $$ Get module list LIST_ENTRY in $t0.
    r? $t0 = &@$peb->Ldr->InLoadOrderModuleList
    $$ Iterate over all modules in list.
    .for (r? $t1 = *(ntdll!_LDR_DATA_TABLE_ENTRY**)@$t0;
          (@$t1 != 0) & (@$t1 != @$t0);
          r? $t1 = (ntdll!_LDR_DATA_TABLE_ENTRY*)@$t1->InLoadOrderLinks.Flink)
    {
        $$ Get base address in $Base.
        as /x ${/v:$Base} @@c++(@$t1->DllBase)

        $$ Get full name into $Mod.
        as /msu ${/v:$Mod} @@c++(&@$t1->FullDllName)

        .block
        {
            .echo ${$Mod} at ${$Base}
        }
        ad ${/v:$Base}
        ad ${/v:$Mod}
    }
$$运行时使用:$$>Ldr->InLoadOrderModuleList
$$迭代列表中的所有模块。
.for(r?$t1=*(ntdll!\u LDR\u数据\u表格\u条目**)@$t0;
(@$t1!=0)和(@$t1!=@$t0);
r?$t1=(ntdll!\u LDR\u DATA\u TABLE\u ENTRY*)@$t1->InLoadOrderLinks.Flink)
{
$$获取$base中的基址。
as/x${/v:$Base}@c++(@$t1->DllBase)
$$将全名输入$Mod。
as/msu${/v:$Mod}@c++(&@$t1->FullDllName)
块
{
.echo${$Mod}位于${$Base}
}
ad${/v:$Base}
ad${/v:$Mod}
}
有一个控制调试器可以看到的调试器消息数的控件。 将该值增加到例如2048时,可以看到所有加载的DLL

以下是相关的关键:

HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager


DWORD DebuggerMaxModuleMsgs=例如2048

我也有这个。一般来说,这似乎是MS调试API的一个限制。VisualStudio也显示了同样的限制。