1

我的单元终结部分有问题,导致我的 unloadDLL 调用出现死锁。我怀疑是哪一个,但我喜欢确认一下。

调用代码在里面system.pas.FinalizeUnits,看起来像:

while Count > 0 do
begin
  Dec(Count);
  InitContext.InitCount := Count;
  P := Table^[Count].FInit;
  if Assigned(P) then
  begin
{$IFDEF LINUX}
    CallProc(P, InitContext.Module^.GOT);
{$ENDIF}
{$IFDEF MSWINDOWS}
    TProc(P)();
{$ENDIF}

其中 P 是指向一个单元的终结例程的指针。

在调试模式下,我可以评估/修改TProc(P)哪个给我(没有值),但是如果我然后检查它,它会在调试检查器中显示单元和过程名称。

有什么方法可以让我将此输出输入到手表中,这样我就不必每次都设置调试检查器,或者我可以将此值作为字符串获取,以使其将要执行的例程输出到事件日志?

如果重要的话,我使用的是 Windows 版本,而不是 Kylix

4

1 回答 1

1

调试器手头有调试信息,可以查找函数。然而,据我所知,没有现成的方法可以将相同的信息输入手表。

于 2013-09-19T17:03:18.347 回答