4

我使用 madExcept(不是来自 IDE),而是在自动批处理中。

我应该打开哪些编译器指令以获得堆栈跟踪和行号。我不关心加载的模块、进程或 CPU 寄存器。

我目前运行:

{$DEBUGINFO ON}
{$LOCALSYMBOLS ON}
{$REFERENCEINFO OFF}

但想尽可能多地删除“胖”,但保留行号。

4

2 回答 2

3

这些是关键设置:

  • 启用调试信息(编译器选项) 。这可确保生成行号信息。如果未启用此选项,您将没有行号,只有每个函数的字节偏移量。
  • 调试信息(链接器选项)已禁用。这可确保可执行文件不包含调试信息。
  • 链接器映射文件选项设置为详细。这确保了行号信息在 .map 文件中发出,这是 madExcept 用来将地址转换为单元名称、方法名称、行号等的信息。

本地符号和参考信息选项不会影响 madExcept 错误报告。您提到的所有设置都不会影响可执行文件的大小。

于 2015-04-08T22:23:59.393 回答
1

根据 mad except 帮助文件,您应该将-gd开关传递给命令行编译器以获得详细的地图文件。madExceptPatch.exe编译后不要忘记运行该工具。

当您在项目选项中启用 madexcept 时,它会设置以下两个编译器选项:

{$DEBUGINFO 1}
{$LOCALSYMBOLS ON}
于 2015-04-09T06:26:44.627 回答