即时窗口 - 如何从文件名中包含连字符、句点和数字的 DLL 调用函数?



我想在即时窗口中运行它:

?(char*)mono-2.0-bdwgc.dll!mono_pmip((void*)0x0000017866931945)

我得到这个:

identifier "mono" is undefined

肯定会加载具有该名称的 DLL。

我尝试将 DLL 名称括在引号、括号、反引号等中 - 我收到"无法识别的令牌"或相同的错误。

从玩弄DLL名称(给出假名字!(来看,问题似乎是连字符,数字和句点的组合。从 DLL 名称中删除其中任何一个都会给出"找不到模块 X"错误,表明它至少可以识别它。

有什么方法应该输入它来使其被识别吗?或者也许这是一个Visual Studio错误?

我使用的是Visual Studio 2017版本15.7.1。DLL来自使用Unity 2018.1.0f2,Windows 64 Standable,.NET 4.6运行时构建的游戏。

上下文:此 Unity 文档 (https://docs.unity3d.com/Manual/WindowsDebugging.html( 指示用户在即时窗口中运行上述命令以从故障转储中检索托管符号 - 但该文档已过时,具有较新单声道运行时的最新版本的 Unity 实际上使用"mono-2.0-bdwgc.dll"而不是"mono.dll",所以我正在尝试但未能适应!

您可以使用替代/引用上下文语法引用:

? {,,mono-2.0-bdwgc.dll}mono_pmip((void*)0x0000017866931945)

使用上下文运算符的支撑版本。

从文档中:

有两种方法可以指定上下文:

  1. {,,[模块] } 表达式

    大括号必须包含两个逗号和模块(可执行文件或 DLL(名称或完整路径。

    例如,要在 EXAMPLE 的SomeFunction函数处设置断点.dll:

    {,,EXAMPLE.dll}SomeFunction
    

模块
  • 模块的名称。您可以使用完整路径来消除同名模块之间的歧义。

    如果模块路径包含逗号、嵌入空格或大括号,则必须在路径两边使用引号,以便上下文分析器可以正确识别字符串。单引号被视为 Windows 文件名的一部分,因此必须使用双引号。例如

    {,,"a long, long, library name.dll"} g_Var
    

相关内容

  • 没有找到相关文章

最新更新