我正在使用JCLDebug(Click Here获取更多信息)在DUnit中显示堆栈跟踪。请参阅下面的堆栈跟踪。JCLDebug堆栈跟踪缺少导致错误的实际代码行
堆栈跟踪显示所有调用功能,调用导致错误的实际功能。 ConvertScriptTestU的第238行调用另一个称为“GetDataLine”的函数(它从堆栈跟踪中丢失),然后然后调用IntToStr(这会引发EConvertError)。为什么堆栈跟踪不包括GetDataLine?
该堆栈跟踪的用处不大,因为我仍然需要计算GetDataLine中的哪一行导致EConvertError。
我在这里使用DUnit,但是我看到在DUnit外部使用JclDebug时会发生同样的情况。
[答案]
此行只是添加到您的项目文件:
JCLdebug.JclStackTrackingOptions:=[stStack, stRawMode];
原来的 “原始模式”。您可能需要调整一些编译器选项太多(例如“产生堆栈帧”)
[/答案】
TestConversion: EConvertError
at SysUtils:0 SysUtils.ConvertErrorFmt$00414A7E
'''' is not a valid integer value
StackTrace
[00414A79]{ConvertDataTests.exe} SysUtils.ConvertErrorFmt
[007E2699]{ConvertDataTests.exe} ConvertScriptTestU.ConvertDataTest.WriteDataToFile (Line 238, "ConvertDataTestU.pas")
[007E2198]{ConvertDataTests.exe} ConvertScriptTestU.ConvertDataTest.TestConversion (Line 164, "ConvertDataTestU.pas")
[0053C66E]{ConvertDataTests.exe} TestFramework.TTestCase.RunTest (Line 2380, "TestFrameWork.pas")
[00537DBA]{ConvertDataTests.exe} TestFramework.TTestResult.RunTestRun (Line 1199, "TestFrameWork.pas")
[00538078]{ConvertDataTests.exe} TestFramework.TTestResult.Run (Line 1275, "TestFrameWork.pas")
[0053963A]{ConvertDataTests.exe} TestFramework.TAbstractTest.RunWithFixture (Line 1723, "TestFrameWork.pas")
[0053C4DD]{ConvertDataTests.exe} TestFramework.TTestCase.RunWithFixture (Line 2363, "TestFrameWork.pas")
如果你生成栈帧为相同的代码会发生什么。 – 2011-05-12 04:37:31
@Robert我改变了代码生成 - >堆栈帧为'真',但输出是相同的。 – awmross 2011-05-12 04:42:28