gpt4 book ai didi

delphi - 如何强制链接器包含调试期间所需的函数?

转载 作者:行者123 更新时间:2023-12-03 14:39:00 25 4
gpt4 key购买 nike

我经常制作一些小方法来辅助调试,但在实际程序中并不使用这些方法。通常,我的大多数类都有一个 AsString 方法,我将其添加到 watch 中。我知道 Delphi 2010 有可视化工具,但我仍然使用 2007。

考虑这个例子:

program Project1;

{$APPTYPE CONSOLE}

uses SysUtils;

type
TMyClass = class
F : integer;
function AsString : string;
end;

function TMyClass.AsString: string;
begin
Result := 'Test: '+IntToStr(F);
end;

function SomeTest(aMC : TMyClass) : boolean;
begin
//I want to be able to watch aMC.AsString while debugging this complex routine!
Result := aMC.F > 100;
end;

var
X : TMyClass;

begin
X := TMyClass.Create;
try
X.F := 100;
if SomeTest(X)
then writeln('OK')
else writeln('Fail');
finally
X.Free;
end;
readln;
end.

如果我添加 X.AsString 作为监视,我只会得到“要调用的函数,TMyClass.AsString,已被链接器消除”。

如何强制链接器包含它?我通常的技巧是在程序中的某个地方使用该方法,但是没有更优雅的方法吗?

答案:GJ 提供了最好的方法。

initialization
exit;
TMyClass(nil).AsString;

end.

最佳答案

sveinbringsli 问:“您对单位功能还有建议吗?”

Delphi 编译器很聪明...所以你可以做类似的事情...

unit UnitA;

interface

{$DEFINE DEBUG}

function AsString: string;

implementation

function AsString: string;
begin
Result := 'Test: ';
end;

{$IFDEF DEBUG}
initialization
exit;
AsString;
{$ENDIF}
end.

关于delphi - 如何强制链接器包含调试期间所需的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1606105/

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