在 Mono 上加载没有 PDB 的 StackTrace
StackTrace without PDB loaded on Mono
我正在尝试从我正在开发的游戏的一些堆栈跟踪中弄明白。这些是在 Mac 上使用 Mono 生成的。
at Microsoft.Xna.Framework.Game.Run () [0x0002c] in <9fdab2ac823a429cb7b8525426626ccc>:0
这告诉我方法名称 (Microsoft.Xna.Framework.Game.Run
) 和 ILOffset (0x0002c
),但我不知道 9fdab2ac823a429cb7b8525426626ccc
是什么。它不是元数据标记,它是某种 GUID。
谁能给我解释一下这个数字是多少?我 objective 将这些信息组合在一起,然后与原始 PDB/MDB 文件一起重构适当的堆栈跟踪。
作为解决方法,我创建了自己的堆栈跟踪方法,该方法也输出元数据标记,但我更愿意使用 Mono 抛出的本机堆栈跟踪。
I have no idea what 9fdab2ac823a429cb7b8525426626ccc
哈希元素(在<>
之间)是模块版本ID(方法所属的汇编模块的MVID
。
生成这些是为了通过
应用程序 compile/AOT 期间生成的 Mono 符号目录来符号化本机崩溃(来自 AOT 应用程序)
mono --aot=msym-dir=<msym dir> .....
或在编译阶段后使用 mono-symbolicate
(您需要所有原始构建工件):
mono-symbolicate store-symbols myExeWithDebugPDBsDirectory/msym-dir myExeWithDebugPDBsDirectory
这会生成包含以下内容的目录 (myEXEwithDebugPDBsDirectory/msym-dir
):
The symbol directory contains subfolder named as a MVID or AOTID
- MVID subfolders contain .dll/.exe and .mdb files.
- AOTID subfolder contain .msym files.
您稍后可以使用 mono-symbolicate
来表示您的崩溃(使用来自匹配应用程序的 msym-dir
)来生成看起来 exception/stacktrace 的 "normal" 托管代码。
注意:您还可以通过设置环境来关闭那些 Mono "compact" 序列点。变种。在你的 运行 你的 exe 之前:
MONO_DEBUG=no-compact-seq-points mono yourApp.exe
回复:Why do my stack traces only include line numbers if the debugger is attached?
我正在尝试从我正在开发的游戏的一些堆栈跟踪中弄明白。这些是在 Mac 上使用 Mono 生成的。
at Microsoft.Xna.Framework.Game.Run () [0x0002c] in <9fdab2ac823a429cb7b8525426626ccc>:0
这告诉我方法名称 (Microsoft.Xna.Framework.Game.Run
) 和 ILOffset (0x0002c
),但我不知道 9fdab2ac823a429cb7b8525426626ccc
是什么。它不是元数据标记,它是某种 GUID。
谁能给我解释一下这个数字是多少?我 objective 将这些信息组合在一起,然后与原始 PDB/MDB 文件一起重构适当的堆栈跟踪。
作为解决方法,我创建了自己的堆栈跟踪方法,该方法也输出元数据标记,但我更愿意使用 Mono 抛出的本机堆栈跟踪。
I have no idea what 9fdab2ac823a429cb7b8525426626ccc
哈希元素(在<>
之间)是模块版本ID(方法所属的汇编模块的MVID
。
生成这些是为了通过
应用程序 compile/AOT 期间生成的 Mono 符号目录来符号化本机崩溃(来自 AOT 应用程序)mono --aot=msym-dir=<msym dir> .....
或在编译阶段后使用 mono-symbolicate
(您需要所有原始构建工件):
mono-symbolicate store-symbols myExeWithDebugPDBsDirectory/msym-dir myExeWithDebugPDBsDirectory
这会生成包含以下内容的目录 (myEXEwithDebugPDBsDirectory/msym-dir
):
The symbol directory contains subfolder named as a MVID or AOTID
- MVID subfolders contain .dll/.exe and .mdb files.
- AOTID subfolder contain .msym files.
您稍后可以使用 mono-symbolicate
来表示您的崩溃(使用来自匹配应用程序的 msym-dir
)来生成看起来 exception/stacktrace 的 "normal" 托管代码。
注意:您还可以通过设置环境来关闭那些 Mono "compact" 序列点。变种。在你的 运行 你的 exe 之前:
MONO_DEBUG=no-compact-seq-points mono yourApp.exe
回复:Why do my stack traces only include line numbers if the debugger is attached?