【问题标题】:.loadby not work, but .load works well.loadby 不起作用,但 .load 效果很好
【发布时间】:2014-09-19 08:26:48
【问题描述】:

当我尝试使用windbg时,

.load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SOS.dll 

非常适合加载 SOS 扩展。

但是当我尝试使用建议的模式时

.loadby SOS

.loadby sos.dll

我只能收到一条错误消息“扩展字符串中的语法错误”。

我尝试用谷歌搜索此错误消息,但没有找到任何有用的信息。

有什么建议吗?

【问题讨论】:

    标签: windbg sos


    【解决方案1】:

    .loadby 需要另一个参数来定义by 的位置。来自 WinDbg 帮助:

    .loadby DLLName ModuleName
    

    DLL 名称
    指定要加载的调试器扩展 DLL。如果您使用 .load 命令,则 DLLName 应包含完整路径。如果使用 .loadby 命令,DLLName 应该只包含文件名。

    模块名称
    指定与 DLLName 指定的扩展 DLL 位于同一目录中的模块的模块名称。

    所以试试

    .loadby sos mscorwks ; *** .NET 2
    .loadby sos clr ; *** .NET 4
    .loadby sos coreclr; *** Silverlight
    

    请注意,在某些情况下,.loadby 可能无法找到 by 模块的完整路径,例如如果转储创建时没有完整路径名 (.dump /maR)。在这种情况下,您必须返回.load

    【讨论】:

    • 包含在答案中,甚至添加了Silverlight
    • 当我尝试运行“.loadby sos clr”时,我得到了:对 LoadLibrary(C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos) 的调用失败, Win32 错误 0n193 “%1 不是有效的 Win32 应用程序。”请检查您的调试器配置和/或网络访问。
    • 确保您使用与您的应用程序相同的 WinDbg 位版本。两者应该匹配。因此,如果您的应用程序是 64 位的,那么请使用 64 位版本的 WinDbg。或者如果是 32 位,则使用 32 位版本的 WinDbg。
    • 谢谢楼主,你说得对,我的bit版本不匹配
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2010-11-06
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多