簡體   English   中英

Delphi:如果我在我的項目中使用包,為什么“使用調試 DCU”變得無效?

[英]Delphi: Why does “use debug DCUs” become ineffective if I'm using packages in my project?

我正在構建一個使用 JVCL 插件系統的項目,該系統依賴於運行時 Delphi 包,自從我將它添加到我的項目以來,調試就變成了一場噩夢,因為我不再能夠逐步追蹤到任何 VCL 或 RTL 單元。 它們在調試器中都被標記為灰點(當相關函數完全出現在調用堆棧中時;有時我會得到非常奇怪的結果),這讓我發瘋。 有誰知道如何恢復我的調試 DCU 功能? (除了顯而易見的:刪除所有與插件相關的代碼。這會起作用,但它並沒有真正的幫助。)

編輯:為了清楚起見,我可以在我的項目中跟蹤任何其他內容。 JVCL 代碼。 其他 3rd 方庫。 我自己的代碼。 所有這些都在調試器中顯示得很好。 只是不是 Delphi RTL 和 VCL 代碼——編譯器選項“使用調試 DCU”應該授予您訪問權限。

這是按設計工作的。

當您使用包構建時,您正在執行包代碼,而不是使用任何 DCU。 因此,DCU 已編譯,您無法訪問調試 DCU。

您可以完全關閉包,也可以不使用要調試的特定包進行編譯。 您可以選擇應該使用或不使用哪些包,未使用的包將通過 Debug DCU 進行“調試”。

包只是 DLL。 您必須將調試信息包含在那些中才能調試它們,這就是您想要做的。 所以你需要有 VCL 和 RTL 的調試包,而不是調試 dcus。 當您使用預構建的軟件包時,甚至不再需要調試 dcus。

可能是您擁有的 DCU 已過時,因此調試器不會進入代碼。

通常刪除所有 DCU 然后執行 Build All 將解決此問題。

您可能還需要刪除搜索路徑中的 DCU,只是為了確定。 當然要先備份...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM