Hãy bắt đầu với mô tả những gì đang xảy ra:SDL2 & GDB: tín hiệu nhận được chương trình ?, tín hiệu không xác định
Tôi đang phát bằng thư viện SDL2 trên Windows. Tôi có thể biên dịch chương trình bằng cách sử dụng nó, và khi tôi chạy .exe nó hoạt động tốt. Các vấn đề phát sinh khi tôi cố gắng gỡ lỗi bằng GDB - khi mã đến SDL_Init hoặc các chức năng SDL_OpenAudio (có thể tạo chủ đề mới), GDB dừng lại, hiển thị thông báo "tín hiệu chương trình nhận được, tín hiệu không xác định" và khi tôi tiếp tục thực hiện chương trình bị treo.
Dường như có lỗi trong GDB (https://www.mail-archive.com/[email protected]/msg149735.html) liên quan đến việc đặt tên chuỗi và phải được sửa trong phiên bản GD1 7.11.1-1.
Lúc đầu, tôi đã sử dụng GCC 5.1.0 (TDM) với GDB 7.6.1, vì vậy tôi quyết định cập nhật lên phiên bản mới hơn. Dường như TDM không cung cấp bất kỳ bản cập nhật nào kể từ khoảng hai năm trước, vì vậy tôi đã cài đặt MinGW-w64 (tôi không nhớ bây giờ, nhưng nó có thể là phiên bản 7.11 của GDB). Đã không giúp đỡ, GDB stil bị treo.
Tiếp theo, tôi đã tìm kiếm phiên bản GDB mới hơn và tìm thấy 7.12 (phương trình chấm chấm dot com/servlet/equation.cmd? Fa = gdb). Đã không làm việc, quá, có thể sửa chữa đã không làm cho nó vào phiên bản này.
Rõ ràng lỗi này chỉ nên có trong phiên bản x86 của GDB, vì vậy tôi đã cài đặt phiên bản x64 của TDM (GCC 5.1.0 và GDB 7.9.1). Chương trình được biên soạn tốt, nhưng GDB vẫn bắt được tín hiệu và chương trình không xác định bị treo.
Hiện tại, tôi không thể gỡ lỗi bất kỳ chương trình nào bằng SDL2. Vì vậy, câu hỏi là, tôi có thể làm gì để nó hoạt động trở lại?
giải pháp có thể:
- Sử dụng Visual Studio - Tôi thích Eclipse (và điều đó có nghĩa là tôi bắt đầu chịu đựng những thứ tôi không thích ở trong đó) và không thực sự muốn học hoàn toàn mới IDE, nhưng tôi sẽ giữ nó như là tùy chọn cuối cùng.
- Biên dịch GDB - đã thử, không hoạt động, biên dịch mọi thứ trên Windows hầu như không bao giờ hoạt động đối với tôi và GDB 7.12 cũng có lỗi này.
- Chuyển sang Linux - Ngay cả tùy chọn cấp tiến hơn chuyển sang Visual Studio.
- Quay lại SDL 1.2 - Mọi thứ trở lại dễ dàng hơn ...
- Chuyển sang bất kỳ thư viện nào khác - ... và hy vọng họ sẽ hợp tác với GDB. Điều đó không thực sự giống như một giải pháp.
- Chuyển sang trình biên dịch khác?
- Tắt đặt tên chuỗi?
mẫu Mã số:
#include <SDL2/SDL.h>
// Normally I'd use #undef main
int WinMain(int, char**)
{
SDL_Init(SDL_INIT_EVERYTHING);
return 0;
}
Compilation: g ++ gdbtest.cpp -lSDL2main -lSDL2
SDL2 phiên bản: 2.0.5 (mới nhất xây dựng cho Windows, MinGW, phiên bản 32bit)
Chạy bình thường: a.exe
Kết quả: bắt đầu chương trình và kết thúc thường
Chạy với GDB: Console log
Kết quả: GDB nhận tín hiệu không rõ, chương trình bị treo
Không có nhiều thứ để tiếp tục. Bạn có thể đăng một số mã tối thiểu để giúp chúng tôi hiểu không? Đăng thêm về môi trường của bạn - các thư viện chính xác mà bạn đã sử dụng, các đối số dòng lệnh được sử dụng để biên dịch và liên kết, v.v. – Leonardo
Xong - mã tối thiểu như nó có thể nhận được. – crueltear