2013-10-27 120 views
5

我用QtCreator IDE編寫了一個使用mingw編譯的非Qt C DLL。如何使用QtCreator調試DLL項目?

當我將DLL注入進程時,DLL會導致該進程在某行代碼處崩潰。我發現這條線是通過使用OutputDebugString的罪魁禍首。我知道如何修復該行,並在修改該行時運行該DLL。但是,爲了學習如何使用調試器,我已經將該線斷開並且未修改。

如何使用QtCreator調試器來查找相同的確切線路導致問題?當QtCreator被設定在調試模式下進行編譯,按F5的結果在下面的對話框,因爲沒有EXE:

enter image description here

+1

編寫一個鏈接庫的小程序,該庫重現問題並在調試器中運行該程序。或者你說的「注入」意味着什麼? –

+0

@FrankOsterfeld:http://en.wikipedia.org/wiki/DLL_injection它是一個低級DLL文件,用於編輯受害過程的內存。由於DLL注入的工作原理,我無法鏈接到庫。爲什麼我要編輯另一個進程的內存?我正在編輯一個名爲Assault Cube的開源項目的內存。目的是探索和學習更多關於C代碼如何轉換爲ASM以及計算機如何在較低級別工作的信息。 – user2924308

+1

那麼,你可以輸入可執行文件名稱,在上面的窗口中使用你的dll和參數,QtCreator將爲你完成剩下的工作。 – Lol4t0

回答

3

的解決方案是在注入DLL之前運行附到可執行調試器。該DLL必須在調試配置中構建,並且其項目需要打開。使用指令here連接調試器並注入DLL。如果可執行文件崩潰,當您單擊所選堆棧幀時,應該看到堆棧跟蹤和您的DLL代碼。但要小心:如果損壞進程的內存,堆棧跟蹤可能不完整或不正確。

+0

太棒了!我幾乎可以肯定,這是不可能的。 – user2924308

+0

@ user2924308如果您發現我的回答有幫助,請接受它。 – Nazar554