2010-06-18 98 views
3

HI:只使用.exe進行調試

我有一個很多年前寫過的Delphi 7程序,但是我丟失了源代碼。這是一個小程序,但對我非常有用。

我試圖在一臺新的Windows XP計算機上「安裝」它,只是用de數據(.db悖論文件)複製文件夾,並配置了BDE連接。

當程序開始時,我收到「未知異常」並暫停。我不知道爲什麼會發生這種情況,並且無法調試導致丟失的源代碼。我在另一臺電腦上嘗試了相同的結果。

任何意見或建議?你在這樣的情況下做什麼?

在此先感謝。

編輯: 當我在新的XP電腦上安裝Delphi 7時,異常來自未知的。這與Paradox.net文件的文件夾有關。緊緊抓住你的一切。

回答

7

Delphi IDE可以附加到正在運行的進程並對其進行調試(運行 - >附加到進程),儘管沒有調試符號,您將最終調試普通匯編程序代碼,這需要一些彙編程序知識以及Windows應用程序的工作方式。如果調試器無法啓動程序,那麼調試啓動異常可能非常困難。您還可以使用Microsoft的WinDbg調試器。 有反彙編程序(我使用了非常強大的IDA Pro),能夠識別標準庫調用,幫助進行分析。您也可能會發現反編譯器,儘管反編譯本機應用程序比使用p代碼或類似應用程序更難一些。 如果錯誤不是由於錯誤配置導致的,則修補二進制文件並不容易。

6

您可以使用任何調試器,無論是Visual Studio one,還是免費的OllyDbg,都不知道Delphi IDE是否有一個簡單的external-exe-debugger。

但是,調試將非常困難,不需要源代碼,並且您至少必須具備有關彙編語言和win32api的基本知識。

或者,您可以使用像FileMon & RegMon這樣的工具來檢查您的應用程序活動並發現潛在問題。

+0

FileMon/RegMon的想法很好 - 理想情況下,你會看到它試圖打開一個不存在的目錄中的文件,或類似的東西,這可以很容易地在外部修復。 – 2010-06-18 12:17:21

+2

Delphi調試器確實支持加載進程。在當前的Delphi版本中,使用「Run | Load Process」菜單項。您指定.exe,然後單擊加載將其加載到調試器中。在較老的Delphi版本中,「Run | Parameters」對話框中提供了類似的功能。 – 2010-06-18 22:28:00

2

您可以在Delphi IDE中嘗試「運行|連接到進程...」。但zed_0xff關於無源消息的說法仍然適用。

2

我會去拆卸的方法,像ldsandon建議,特別是因爲你有(一些)有關你的exe是在做什麼的知識。除了IDA Pro還可以看看專門針對Delphi的工具,如IDR(Interactive Delphi Reconstructor),DeDePE Explorer

1

爲了確保它不與BDE相關,我將構建另一個基本應用程序,試圖訪問此機器上的相同數據。
一旦這個應用程序工作,你可以繼續測試Pascal代碼的一面。
我有我的BDE古怪的份額,所以我寧願排除這一點。