madExcept 需要编译器指令
madExcept required compiler directives
我使用 madExcept(不是来自 IDE),而是在自动批处理过程中。
为了获得堆栈跟踪和行号,我应该打开哪些编译器指令。我不关心加载的模块、进程或 CPU 寄存器。
我目前 运行 有:
{$DEBUGINFO ON}
{$LOCALSYMBOLS ON}
{$REFERENCEINFO OFF}
但希望尽可能删除 "fat" 但保留行号。
这些是关键设置:
- Debug information (compiler options) 启用。这确保生成行号信息。如果未启用此选项,您将没有行号,只有每个函数的字节偏移量。
- Debug information (linker options) 禁用。这确保可执行文件不包含调试信息。
- 链接器 map file 选项设置为详细。这确保了行号信息在 .map 文件中发出,这是 madExcept 用来将地址转换为单元名称、方法名称、行号等的信息。
本地符号和参考信息选项不会影响 madExcept 错误报告。 None 您提到的设置会影响可执行文件的大小。
根据mad except 帮助文件,你应该将-gd
开关传递给命令行编译器以获得详细的映射文件。编译后别忘了运行 madExceptPatch.exe
工具。
当您在项目选项中启用 madexcept 时,它会设置以下两个编译器选项:
{$DEBUGINFO 1}
{$LOCALSYMBOLS ON}
我使用 madExcept(不是来自 IDE),而是在自动批处理过程中。
为了获得堆栈跟踪和行号,我应该打开哪些编译器指令。我不关心加载的模块、进程或 CPU 寄存器。
我目前 运行 有:
{$DEBUGINFO ON}
{$LOCALSYMBOLS ON}
{$REFERENCEINFO OFF}
但希望尽可能删除 "fat" 但保留行号。
这些是关键设置:
- Debug information (compiler options) 启用。这确保生成行号信息。如果未启用此选项,您将没有行号,只有每个函数的字节偏移量。
- Debug information (linker options) 禁用。这确保可执行文件不包含调试信息。
- 链接器 map file 选项设置为详细。这确保了行号信息在 .map 文件中发出,这是 madExcept 用来将地址转换为单元名称、方法名称、行号等的信息。
本地符号和参考信息选项不会影响 madExcept 错误报告。 None 您提到的设置会影响可执行文件的大小。
根据mad except 帮助文件,你应该将-gd
开关传递给命令行编译器以获得详细的映射文件。编译后别忘了运行 madExceptPatch.exe
工具。
当您在项目选项中启用 madexcept 时,它会设置以下两个编译器选项:
{$DEBUGINFO 1}
{$LOCALSYMBOLS ON}