2013-10-27 20 views
5

QtCreator IDE kullanarak mingw ile derlenmiş bir Qt C DLL yazdım.QtCreator kullanarak bir DLL projesinde nasıl hata ayıklanır?

DLL bir işlem içine enjekte ettiğimde, DLL bu işlemin belirli bir kod satırında çökmesine neden olur. Bu satırı OutputDebugString kullanımıyla suçlu buldum. Satırı düzeltmeyi biliyorum ve bu satır değiştirildiğinde, DLL çalışır. Ancak, bir hata ayıklayıcısının nasıl kullanılacağını öğrenmek amacıyla, çizgiyi bozuk ve değiştirilmemiş bıraktım.

Aynı satırın soruna neden olduğunu bulmak için QtCreator hata ayıklayıcısını nasıl kullanırdım?

enter image description here

+1

Sorunu yeniden üreten ve hata ayıklayıcısında çalıştıran kütüphaneye karşı küçük bir program yazın. Ya da "enjekte" ile tam olarak ne demek istiyorsun? –

+0

@FrankOsterfeld: http://en.wikipedia.org/wiki/DLL_injection Kurban süreçlerinin belleğini düzenleyen düşük düzeyli bir DLL dosyasıdır. DLL enjeksiyonunun nasıl çalıştığından dolayı kütüphaneye bağlanamıyorum. Neden başka bir sürecin hafızasını düzenliyorum? Assault Cube adlı açık kaynaklı bir projenin belleğini düzenliyorum. Amaç, C kodunun ASM'ye nasıl dönüştürüldüğü ve bilgisayarların alt düzeyde nasıl çalıştığı hakkında daha fazla bilgi edinmek ve öğrenmek. – user2924308

+1

Eh, sadece yukarıdaki pencerede dll ve argümanlar kullanır ve QtCreator sizin için dinlenme yapacak, yürütülebilir adı yazabilirsiniz. – Lol4t0

cevap

3

çözüm DLL enjekte önce yürütülebilir bağlı ayıklayıcısını çalıştırmaktır: QtCreator hiçbir EXE olmadığından bir sonraki iletişim kutusunda F5 sonuçlarını basarak hata ayıklama modunda derlemeye ayarlandığında. DLL, hata ayıklama yapılandırmasında oluşturulmalı ve projesinin açılması gerekiyor. Hata ayıklayıcıyı here yönergelerini kullanarak ekleyin ve DLL'yi enjekte edin. Yürütülebilir çöküyorsa, seçilen yığın çerçevesine tıkladığınızda yığın izleme ve DLL kodunuzu görmelisiniz. Ancak dikkatli olun: İşlemin belleğini bozarsanız yığın izi eksik veya yanlış olabilir.

+0

Harika! Bunun mümkün olmadığından neredeyse eminim. – user2924308

+0

@ user2924308 Cevabımı faydalı buluyorsanız, lütfen kabul edin. – Nazar554

İlgili konular