2010-01-06 69 views
7

我有一個Delphi Windows應用程序,在Wine下死得可怕 - 甚至沒有創建主窗體。由於各種原因,移植到Free Pascal不是一種選擇。調試Wine上的Delphi應用程序

我可以使用Delphi的本機方式在Wine下調試嗎?如果沒有,我可以使用gdb在Wine下進行調試,如果是的話,如何將Delphi格式的調試信息(可能是Turbo Debugger)提供給gdb?

最後,如何從程序中檢測Wine?葡萄酒常見問題解答表示我不應該這樣做,但我認爲修復我的應用程序對於葡萄酒夥伴的優先列表來說並不是很重要,所以我寧願將這些問題交由我親手處理。

我沒有寫應用程序,但我有Delphi的源代碼和副本。

回答

1

可能能夠得到遠程調試器連接到Wine應用程序(從來沒有嘗試過),但這是要求大量的葡萄酒。

我想嘗試的第一件事就是使用堆棧跟蹤實用程序,如JCL調試擴展。堆棧跟蹤可以爲您提供足夠的信息來解決問題,而無需在Linux下進行調試工作。

+0

這與基於printf()的年齡調試無異:)這是一個選項,我承認。只是不是一個愉快的。 – 2010-01-06 21:35:03

+0

作爲一個調試工具,是的。作爲從客戶或其他難以複製的案例中獲取postmortems的一種方式,它是無價的。 – 2010-01-06 22:32:21

+0

現在我的野心更加謙虛了 - 開始這個該死的東西並且展示主窗口就足夠了。 :)該應用程序是免費的,因此嚴格的客戶支持不在我的日程上。感謝您的鏈接。 – 2010-01-06 23:27:32

2

我確實相信你應該可以用gdb進行調試,但是我不知道如何將所有Delphi源代碼提供給它。您需要將所有調試信息包含在EXE中(包括外部調試器)才能開始。

我建議你得到一個支持通過TCP/IP進行日誌記錄的日誌工具。兩個好的是SmartInspectCodeSite。將這些與像JCL提供的堆棧跟蹤實用程序結合起來,您可能會發現這是一個更好的解決方案,然後再連接調試器。

上雖然檢測葡萄酒好運。我會很好奇看到你想出什麼。似乎它應該是可能的,但。

0

如果你有源代碼,然後用一堆調試信息重新編譯並嘗試像在Windows上一樣運行它。

葡萄酒有很多的API沒有實現,你可能有一些運氣隨機安裝額外的軟件包與winetricks。

我有一個類似的問題,用我們的Delphi應用程序使用wine,我需要安裝ODBC管理器,在默認情況下我不能進入該工作狀態。

+0

哦,我讀過你的評論,你不太喜歡printf調試,哦。這可能只有1或2件事情阻止你的軟件初始化,所以它可能是值得的。 – 2010-01-08 16:45:08

+0

那麼,如果沒有更好的選擇,那麼printf()就是。我只是希望StackOverflow的集體智慧有更好的解決方案。 – 2010-01-08 17:14:10

+0

是否有未實現的API的大列表? – 2010-01-08 21:07:33