gpt4 book ai didi

delphi - 结合 Log4Delphi 和 jcl 调试

转载 作者:行者123 更新时间:2023-12-03 18:31:59 31 4
gpt4 key购买 nike

目前我正在测试在 Delphi XE 3 中使用的各种日志框架。由于使用 Log4Delphi 在现有程序中的实现问题最少,我目前正在尝试为我的日志消息获取其他信息。现在我想要的是方法名称和代码行等附加信息。我已经发现绝地代码库的调试功能可能会提供此类数据。可悲的是,我无法弄清楚如何让它按照我想要的方式工作。

我目前正在使用这个功能:

function CurrentFunctionName: string;
begin
Result := jcldebug.getlocationInfoStr(Caller(1));
end;

但是虽然我发现的代码示例提供了这样的数据:
[004223A7] jcldebugtest.SomeProcedure (Line 10, "jcldebugtest.dpr")

当我尝试在我的程序中使用它时,我获得的所有数据如下所示:
(00E8EF63) [0128FF63] 

我不完全理解这种行为的原因,所以如果有人能向我解释如何正确地做到这一点以及我的错误/误解在哪里,那就太好了。

最佳答案

您需要进入Project->Options->Linker ,然后打开 Detailed映射文件,然后构建(不是编译!)你的项目。映射文件信息是将原始地址转换为代码中特定位置所必需的。

您可以使用位于 JCL\Examples\Windows\Debug\SourceLoc 中的示例进行测试。文件夹。如果您构建并运行 SourceLocExample.dpr,单击“Caller()”、“地址查找”或“堆栈转储”按钮将仅返回内存地址。然后按照上面的说明启用详细 map 文件,做一个Project->Build从 IDE 的菜单中,再次运行该示例,单击相同的按钮并比较输出。

然后您可以(可选)使用 Project->JCL Debug expert将调试信息嵌入到您的可执行文件中,而不是将其作为需要分发的单独文件提供。

关于delphi - 结合 Log4Delphi 和 jcl 调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19450140/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com