【发布时间】:2015-01-06 09:37:48
【问题描述】:
我有一个用 Addin Express VCL 开发的 Word 插件(一个 ActiveX 服务器(DLL)),在将整个项目从 D7 升级到 XE4 后,我发现断点不再稳定 - 有时断点会停止,但大多数时候不会。
我已经尝试了其他问题中的所有解决方案(如该搜索查询的 Google 结果的第一页和两页所示:delphi breakpoint does not work site:stackoverflow.com),但没有一个有效。有什么帮助吗?谢谢。
更新 1: 我尝试过的事情:
- 确保构建配置为“调试”;
- 重建整个项目;
- “调试信息”项目选项已启用;
- “本地符号”项目选项已启用;
- 链接->调试信息已启用;
- '远程调试'已启用';
更新 2: 很奇怪,启用“使用调试 dcus”后,重新构建,再次禁用它,重新构建,现在我收到以下错误。 IE,断点第一次工作,然后在CPU窗口意外停止,终止MS Word(主机),尝试开始调试会导致以下错误,必须启动IDE。 但是当不处于调试模式时没有问题
---------------------------
Error
---------------------------
Assertion failure: "!"could not initialize evaluator""
in ..\win32src\eval32.cpp at line 1231
---------------------------
OK Details <<
---------------------------
[2039534C]{dbkdebugide180.bpl} Debug.TDebugKernel.msgBox (Line 5931, "Debug.pas" + 30) + $0
[2E027FA9]{bordbk180.dll} Unknown function at @isDbkLoggingOn$qv + $E0D1
[0DBAA4CC]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $2F654
[0DB7C6BF]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $1847
[080A4124]{dcc32180.dll} C:\BUILDS\TP\INTERMEDIATE\DEBUG\LIB\DCC32\CODEGEN.OBJ.FlushConst + $2170
[080A4D26]{dcc32180.dll} C:\BUILDS\TP\INTERMEDIATE\DEBUG\LIB\DCC32\CODEGEN.OBJ.FlushConst + $2D72
[0067FA5D]{bds.exe } bds.bds (Line 204, "" + 8) + $19C49E
[080A4D26]{dcc32180.dll} C:\BUILDS\TP\INTERMEDIATE\DEBUG\LIB\DCC32\CODEGEN.OBJ.FlushConst + $2D72
[080B164A]{dcc32180.dll} C:\BUILDS\TP\INTERMEDIATE\DEBUG\LIB\DCC32\CODEGEN.OBJ.GenPackageBody + $116
[080AF6D3]{dcc32180.dll} C:\BUILDS\TP\INTERMEDIATE\DEBUG\LIB\DCC32\CODEGEN.OBJ.FlushConst + $D71F
[07F9130B]{dcc32180.dll} C:\BUILDS\TP\LIB\WIN32\DEBUG\C0D32W.OBJ.___System__GetTls + $11
[080B1AD4]{dcc32180.dll} C:\BUILDS\TP\INTERMEDIATE\DEBUG\LIB\DCC32\CODEGEN.OBJ.GenIntfAdjustor + $398
[080A4124]{dcc32180.dll} C:\BUILDS\TP\INTERMEDIATE\DEBUG\LIB\DCC32\CODEGEN.OBJ.FlushConst + $2170
[07FA4413]{dcc32180.dll} C:\BUILDS\TP\INTERMEDIATE\DEBUG\LIB\DCC32\BROWCMGR.OBJ.DumpSymtabUnitListLast + $BF
[080A3616]{dcc32180.dll} C:\BUILDS\TP\INTERMEDIATE\DEBUG\LIB\DCC32\CODEGEN.OBJ.FlushConst + $1662
[080A1C03]{dcc32180.dll} C:\BUILDS\TP\INTERMEDIATE\DEBUG\LIB\DCC32\CODEGEN.OBJ.ReserveConstructorFrameSlots + $140B
[0808D5A1]{dcc32180.dll} C:\BUILDS\TP\INTERMEDIATE\DEBUG\LIB\DCC32\LNK2DISK.OBJ.LocateLocalSymbols + $97D
[07FA8BBA]{dcc32180.dll} C:\BUILDS\TP\INTERMEDIATE\DEBUG\LIB\DCC32\BROWCMGR.OBJ.SetCompState + $FA
[07FA87E1]{dcc32180.dll} C:\BUILDS\TP\INTERMEDIATE\DEBUG\LIB\DCC32\BROWCMGR.OBJ.ClosePackageFilesDLL + $11D
[07FA8809]{dcc32180.dll} C:\BUILDS\TP\INTERMEDIATE\DEBUG\LIB\DCC32\BROWCMGR.OBJ.ClosePackageFilesDLL + $145
[0DB90C9F]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $15E27
[57008381]{madBasic_.bpl} Madstrings.WideToAnsiEx + $2D
[570114D4]{madBasic_.bpl} Madtools.FindModule + $C8
[57011500]{madBasic_.bpl} Madtools.FindModule + $F4
[5005FA84]{rtl180.bpl } System.TMonitor.TryEnter (Line 17109, "System.pas" + 10) + $0
[5005F618]{rtl180.bpl } System.TMonitor.Enter (Line 16808, "System.pas" + 4) + $2
[5005F7EB]{rtl180.bpl } System.TMonitor.Exit (Line 16933, "System.pas" + 2) + $7
[0DBB1FCA]{bordbk180N.dll} Unknown function at POSTEDHOOKPROC + $1246
[0DBB4EBB]{bordbk180N.dll} Unknown function at POSTEDHOOKPROC + $4137
[0DBA3ED7]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $2905F
[0DBA3EE8]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $29070
[5981E15C]{madExcept_.bpl} Madexcept.IsTrueUnicodeString + $4BC
[5981E181]{madExcept_.bpl} Madexcept.IsTrueUnicodeString + $4E1
[5985A581]{madExcept_.bpl} Madexcept.UnpatchAPI + $801
[0DB90751]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $158D9
[5985A596]{madExcept_.bpl} Madexcept.UnpatchAPI + $816
[0DB90751]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $158D9
[0DB844DD]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $9665
[0DBAFB9D]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $34D25
[0DBADDE3]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $32F6B
[0DBADF23]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $330AB
[0DBA5D9E]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $2AF26
[0DBB4F27]{bordbk180N.dll} Unknown function at POSTEDHOOKPROC + $41A3
(000083C9){bordbk180N.dll} [0DB793C9]
[0DB7C032]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $11BA
[0DB9B760]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $208E8
[504575B5]{vcl180.bpl } Vcl.Controls.TWinControl.WndProc (Line 10039, "Vcl.Controls.pas" + 153) + $6
[0DBB167F]{bordbk180N.dll} Unknown function at POSTEDHOOKPROC + $8FB
[0DB9ADAC]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $1FF34
(00007EE1){bordbk180N.dll} [0DB78EE1]
[21101D7A]{designide180.bpl} DeskUtil.SetFocusHook (Line 463, "DeskUtil.pas" + 4) + $C
[218A45BB]{vclactnband180.bpl} Vcl.ActnMenus.CallWindowHook (Line 748, "Vcl.ActnMenus.pas" + 20) + $F
[0DB9C588]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $21710
[0DB9C56F]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $216F7
[0DB88656]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $D7DE
[0DB9C588]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $21710
[0DB7ED8A]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $3F12
[0DB9BC13]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $20D9B
[0DB9BEAD]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $21035
[0DB9D749]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $228D1
[0DBBF4DB]{bordbk180N.dll} Unknown function at POSTEDHOOKPROC + $E757
[0DBB1FCA]{bordbk180N.dll} Unknown function at POSTEDHOOKPROC + $1246
[0DBB2924]{bordbk180N.dll} Unknown function at POSTEDHOOKPROC + $1BA0
[0DBB2753]{bordbk180N.dll} Unknown function at POSTEDHOOKPROC + $19CF
[0DB7E60C]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $3794
[0DB7E634]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $37BC
[0DB88DDF]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $DF67
[0DB9C6C0]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $21848
[0DBA10D2]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $2625A
[0DB9CF1C]{bordbk180N.dll} Unknown function at @isDbkLoggingOn$qv + $220A4
[5016EDDD]{rtl180.bpl } System.Classes.TComponent.UpdateAction (Line 16030, "System.Classes.pas" + 1) + $A
[5057C69F]{vcl180.bpl } Vcl.Forms.ProcessUpdate (Line 7244, "Vcl.Forms.pas" + 1) + $11
[5005EE12]{rtl180.bpl } System.@IsClass (Line 15664, "System.pas" + 1) + $8
[5057C708]{vcl180.bpl } Vcl.Forms.TraverseClients3 (Line 7261, "Vcl.Forms.pas" + 5) + $1E
[5016EDDD]{rtl180.bpl } System.Classes.TComponent.UpdateAction (Line 16030, "System.Classes.pas" + 1) + $A
[5057C69F]{vcl180.bpl } Vcl.Forms.ProcessUpdate (Line 7244, "Vcl.Forms.pas" + 1) + $11
[5005EE12]{rtl180.bpl } System.@IsClass (Line 15664, "System.pas" + 1) + $8
[5057C713]{vcl180.bpl } Vcl.Forms.TraverseClients3 (Line 7261, "Vcl.Forms.pas" + 5) + $29
[5057C722]{vcl180.bpl } Vcl.Forms.TraverseClients3 (Line 7261, "Vcl.Forms.pas" + 5) + $38
[5016EDDD]{rtl180.bpl } System.Classes.TComponent.UpdateAction (Line 16030, "System.Classes.pas" + 1) + $A
[50455D4A]{vcl180.bpl } Vcl.Controls.TWinControl.GetControl (Line 9131, "Vcl.Controls.pas" + 4) + $A
[5005EE12]{rtl180.bpl } System.@IsClass (Line 15664, "System.pas" + 1) + $8
[5016EDDD]{rtl180.bpl } System.Classes.TComponent.UpdateAction (Line 16030, "System.Classes.pas" + 1) + $A
[5057C69F]{vcl180.bpl } Vcl.Forms.ProcessUpdate (Line 7244, "Vcl.Forms.pas" + 1) + $11
[5005EE12]{rtl180.bpl } System.@IsClass (Line 15664, "System.pas" + 1) + $8
[5057C708]{vcl180.bpl } Vcl.Forms.TraverseClients3 (Line 7261, "Vcl.Forms.pas" + 5) + $1E
[5057C722]{vcl180.bpl } Vcl.Forms.TraverseClients3 (Line 7261, "Vcl.Forms.pas" + 5) + $38
(00037999){CnWizards_DXE4.dll} [0E048999]
(00037A00){CnWizards_DXE4.dll} [0E048A00]
(00037AB1){CnWizards_DXE4.dll} [0E048AB1]
[50455D4A]{vcl180.bpl } Vcl.Controls.TWinControl.GetControl (Line 9131, "Vcl.Controls.pas" + 4) + $A
(000352F2){CnWizards_DXE4.dll} [0E0462F2]
(00263348){mmx_bds11.dll} [0F204348]
[500630C0]{rtl180.bpl } System.@FinalizeArray (Line 29800, "System.pas" + 139) + $0
[500630B0]{rtl180.bpl } System.@FinalizeArray (Line 29788, "System.pas" + 127) + $0
[50580E8F]{vcl180.bpl } Vcl.Forms.TApplication.ProcessMessage (Line 10290, "Vcl.Forms.pas" + 25) + $1
[50580ECA]{vcl180.bpl } Vcl.Forms.TApplication.HandleMessage (Line 10318, "Vcl.Forms.pas" + 1) + $4
[50581205]{vcl180.bpl } Vcl.Forms.TApplication.Run (Line 10456, "Vcl.Forms.pas" + 26) + $3
【问题讨论】:
-
解释“不起作用”是什么意思?(不会在断点处停止?无法设置?代码中的行不匹配?)你有一件事在您尝试过的事情中未提及:您是否检查过是否有任何代码明确禁用调试信息?项目设置可以被
{$D-}或{$DEBUGINFO OFF}覆盖。还要确保您没有引用同一单元的不同副本。这可能会导致断点似乎在错误的位置。 -
你也做过吗?选项>Delphi Complier>Compling>Use debug .dcus = True。同时清理项目,然后编译。
-
这主要是一个单元,还是几个?您是否确保单位行结尾都是 CRLF 而不是 LF 或 CR(有时会在从网页或帮助文件中粘贴代码时发生)。
-
@CraigYoung,我的意思是 IDE 永远不会在断点处停止。我已经更新了我的问题。
-
@Ravaut123,是的,我试过了。
标签: delphi delphi-xe4