简体   繁体   English

是否可以从DCU中剥离调试信息?

[英]Is it possible to strip Debug Information from DCUs?

I am using free embedded NexusDB from GetIt which comes without sources, only .DCUs 我正在使用GetIt提供的免费嵌入式NexusDB,它没有来源,只有.DCU

However, these DCUs has debug info in them, which hamper debugging a lot, ie when I try to Step Into (F7) my code, IDE often prompts me about source file location of, say, nxdb.pas , and then, as I have no such file, come into CPU view with disassembly with line numbers only (see example at the bottom). 但是,这些DCU中包含调试信息,这极大地妨碍了调试,即当我尝试单Step Into (F7)我的代码时,IDE经常提示我有关nxdb.pas源文件位置,然后像我这样没有此类文件,请进入CPU视图,仅使用行号进行反汇编(请参见底部的示例)。

Same problem is with Trace to Next Source Line (Shift+F7) Trace to Next Source Line (Shift+F7)也是同样的问题

NexusDB Library folder contains only one version of .DCUs, there is no "Release" version NexusDB库文件夹仅包含一个版本的.DCU,没有“发行”版本

So I come to this question - is there any way to strip debug info from .DCUs? 所以我来问这个问题-有什么方法可以从.DCU中剥离调试信息?

Example of CPU view with linenumbers only: 仅具有行号的CPU视图示例:

TnxDataset.Notification:
007930EC 55               push ebp
...
007930F7 8945FC           mov [ebp-$04],eax
<unknown file>.10682: 
007930FA 8BCB             mov ecx,ebx
...
00793101 E8F6F9D3FF       call TComponent.Notification
<unknown file>.10683: 
00793106 8B45FC           mov eax,[ebp-$04]

I'm not aware of any utility that will do this for you. 我不知道会为您执行此操作的任何实用程序。 Your best course of action is likely to actively set breakpoints in your event handlers etc. I suspect that the most common cause of the IDE's request for the source is when exceptions occur; 您最好的做法可能是在事件处理程序等中主动设置断点。我怀疑IDE请求源的最常见原因是发生异常时。 then just continue running to see the exception. 然后继续运行以查看异常。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM