2013-10-27 20 views
5

Tôi đã viết một DLL không Qt C được biên dịch với mingw bằng cách sử dụng QtCreator IDE.Làm thế nào để gỡ lỗi một dự án DLL bằng QtCreator?

Khi tôi tiêm DLL vào một tiến trình, DLL làm cho quá trình đó gặp sự cố tại một dòng mã nhất định. Tôi thấy dòng này là thủ phạm thông qua việc sử dụng OutputDebugString. Tôi biết làm thế nào để sửa chữa dòng và DLL hoạt động khi dòng đó được sửa đổi. Tuy nhiên, với mục đích học cách sử dụng trình gỡ lỗi, tôi đã để lại dòng bị hỏng và chưa sửa đổi.

Tôi làm cách nào để sử dụng trình gỡ lỗi QtCreator để tìm cùng một dòng chính xác đang gây ra sự cố? Khi QtCreator được thiết lập để biên dịch trong chế độ gỡ lỗi, nhấn F5 kết quả ở cửa sổ dưới đây vì không có EXE:

enter image description here

+1

Viết một chương trình nhỏ liên kết với thư viện để tái tạo sự cố và chạy nó trong trình gỡ lỗi. Hoặc bạn có ý nghĩa gì với "tiêm"? –

+0

@FrankOsterfeld: http://en.wikipedia.org/wiki/DLL_injection Đây là một tệp DLL cấp thấp chỉnh sửa bộ nhớ của nạn nhân procces. Tôi không thể liên kết với thư viện vì cách thức hoạt động của DLL injection. Tại sao tôi chỉnh sửa bộ nhớ của một quá trình khác? Tôi đang chỉnh sửa bộ nhớ của một dự án mã nguồn mở được gọi là Assault Cube. Mục đích là để khám phá và tìm hiểu thêm về cách mã C được dịch sang ASM và cách máy tính hoạt động ở cấp thấp hơn. – user2924308

+1

Vâng, bạn có thể chỉ cần gõ tên thực thi, sử dụng dll và đối số của bạn để nó trong cửa sổ ở trên và QtCreator sẽ làm phần còn lại cho bạn. – Lol4t0

Trả lời

3

Giải pháp là để chạy trình gỡ lỗi gắn liền với thực thi trước khi tiêm DLL. DLL phải được xây dựng trong cấu hình gỡ lỗi và dự án của nó cần được mở. Đính kèm trình gỡ lỗi bằng cách sử dụng các hướng dẫn here và tiêm DLL. Nếu có thể xảy ra sự cố, bạn sẽ thấy dấu vết ngăn xếp và mã DLL của bạn khi bạn bấm vào khung ngăn xếp đã chọn. Nhưng hãy cẩn thận: nếu bạn làm hỏng bộ nhớ của quá trình, dấu vết ngăn xếp có thể không đầy đủ hoặc không chính xác.

+0

Tuyệt vời! Tôi đã gần như chắc chắn rằng điều này là không thể. – user2924308

+0

@ user2924308 Nếu bạn thấy câu trả lời của tôi hữu ích, vui lòng chấp nhận câu trả lời đó. – Nazar554

Các vấn đề liên quan