Delphi 除了必需的编译器指令之外

Delphi 除了必需的编译器指令之外,delphi,delphi-xe7,compiler-directives,madexcept,Delphi,Delphi Xe7,Compiler Directives,Madexcept,我使用madExcept(不是来自IDE),而是在自动批处理过程中使用 我应该打开哪些编译器指令以获得堆栈跟踪和行号。我不关心加载的模块、进程或CPU寄存器 我目前使用: {$DEBUGINFO ON} {$LOCALSYMBOLS ON} {$REFERENCEINFO OFF} 但希望删除尽可能多的“fat”,但保留行号。以下是关键设置: 启用。这可确保生成行号信息。如果未启用此选项,则不会有行号,每个函数中只有字节偏移量 残疾人。这确保可执行文件不包含调试信息 链接器选项设置为详细。这

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

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

我目前使用:

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

但希望删除尽可能多的“fat”,但保留行号。

以下是关键设置:

  • 启用。这可确保生成行号信息。如果未启用此选项,则不会有行号,每个函数中只有字节偏移量
  • 残疾人。这确保可执行文件不包含调试信息
  • 链接器选项设置为详细。这可确保行号信息在.map文件中发出,该文件是MAD用于将地址转换为单元名称、方法名称、行号等的信息

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

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

在“项目选项”中启用madexcept时,将设置以下两个编译器选项:

{$DEBUGINFO 1}
{$LOCALSYMBOLS ON}

“启用调试信息”是指编译调试信息还是链接调试信息。看起来链接器是正确的,我指的是编译器设置。链接器选项控制是否在可执行文件中嵌入调试信息。该问题询问行号。你的回答没有解决这个问题。