2009-07-29 7 views
9

Tôi chuyển từ Windows sang Ubuntu Linux, và bây giờ tôi muốn thiết lập môi trường phát triển tại đây. Vấn đề là tôi cầnGỡ rối ứng dụng Windows trên hộp Linux trong Eclipse CDT

  1. C/C++ IDE so sánh với Visual Studio
  2. Way để tạo ra mã nhị phân Windows PE
  3. Way làm debug Windows PE binaries

Tại lần đầu tiên tôi đã cố gắng Mã :: Khối. Here Tôi tìm thấy hướng dẫn để thiết lập để phát triển chéo vì vậy tôi đã quản lý để có được "Hello World" được biên dịch và chạy dưới Wine. Hơn nữa, gỡ lỗi cũng làm việc.

Nhưng sau đó tôi thấy rằng Eclipse + CDT plugin là IDE tiên tiến hơn nhiều. Tôi đã dành thời gian và cuối cùng nhận được dự án được biên dịch và liên kết.

Bây giờ tôi đang cố gắng để có được phiên bản MinGW Insight của GDB hoạt động trong Eclipse CDT. Cách đơn giản để sử dụng trình gỡ lỗi được mô tả trong Code :: Blocks guide sẽ không hoạt động nữa. Tôi tiếp tục nhận được thông báo "Lỗi tạo phiên".

Vì vậy, câu hỏi của tôi là, làm cách nào tôi có thể sử dụng GDG của MinGW trong Wine dưới dạng trình gỡ lỗi trong Eclipse? Hoặc IDE tốt nhất cho Linux-> Windows phát triển chéo là gì?

Trả lời

3

Tôi tự hỏi rằng không ai trả lời câu hỏi này.

  1. QtCreator. Đừng nhầm lẫn với tên của nó, QtCreator hoạt động khá tốt với bất kỳ loại mã C++ nào, bạn không cần phải viết mã Qt để sử dụng nó. Nó giống như FOSS Visual Studio: nó thậm chí còn có một cú pháp kiểm tra "on fly".

  2. MinGW. Đây không phải là nhiều để nói, nó chỉ là tạo ra thực thi Win PE, và nó hoạt động. Nó có sẵn trong kho. Lưu ý rằng một ứng dụng Win GUI có bit đặc biệt trong bộ tiêu đề PE của nó; do đó, để tạo ứng dụng GUI với MinGW, bạn phải chuyển một tùy chọn -mwindows để thiết lập bit này.

  3. Đây là vấn đề. Thực sự: Tôi chỉ đang cố gắng gỡ lỗi ứng dụng cửa sổ và không tìm được cách nào để thực hiện. Tôi sẽ sớm gọi lại đây những gì tôi đã cố gắng cho đến nay, chỉ để các bạn để không dẫm lên cào của tôi:

    • winedbg. Có lẽ nó sẽ làm việc, nhưng đối với tôi nó không. Khi tôi đặt điểm ngắt, tức là như thế này br 43, nó cho biết Unable to add breakpoint (unknown address 7b860807).

    • winedbg. Vâng, một lần nữa, nhưng lần này chúng tôi sẽ sử dụng nó như thế này winedbg --gbd để làm cho nó proxy một lệnh để gdb. Có lẽ đây là cách duy nhất để gỡ rối một ứng dụng, nhưng nó có một nhược điểm: đầu tiên, để khởi động lại một ứng dụng, bạn phải thoát khỏi trình gỡ rối; nếu bạn nhập run nó nói rằng mục tiêu từ xa không hỗ trợ điều này. Thứ hai, tôi thậm chí không có ý tưởng làm thế nào để gỡ lỗi một ứng dụng đa luồng; khi tôi lần đầu tiên bắt đầu điều này, tôi tình cờ gặp lỗi Non-stop mode requested, but remote does not support non-stop và sau khi đặt điểm ngắt và bắt đầu ghi: Cannot insert breakpoint 1.Cannot access memory at address 0x401654.Vì vậy, để thực hiện công việc này, tôi cần phải đổi tên tệp .gdbinit(tức là chế độ không ngừng được đặt ở đó).

    • gdb.exe. Tôi đã chắc chắn rằng tôi tìm thấy một cách: sử dụng đơn giản của một phiên bản cửa sổ của gdb nên giải quyết vấn đề; hơn nữa, đối với tôi, như tôi là một người Emacs, nó sẽ hoàn toàn giống như gỡ lỗi với gdb gốc. Nhưng than ôi, cửa sổ gdb không hoạt động. Nếu tôi chạy nó, và nhập bất kỳ lệnh nào, nó sẽ không làm gì cả. Nó chỉ phản ứng trên Ctrl-cCtrl-z lệnh. Có lẽ tôi sẽ thử thời gian rảnh rỗi của tôi để đặt một câu hỏi về nó trên danh sách gửi thư. Vâng, bây giờ chúng ta không thể sử dụng nó ...

Vì vậy, những gì chúng tôi đã làm với debug? Hầu hết có thể tìm kiếm một trình gỡ lỗi Windows khác hoạt động theo RƯỢU VANG. Nếu tôi nhớ lại chính xác, OllyDbg đã làm việc, nhưng tôi không biết tại thời điểm này làm thế nào để nó hiển thị một mã nguồn.

+0

+1 cho QtCreator. Nó hoạt động rất tốt với chuỗi công cụ GCC. – yasouser

+0

Tôi chưa cập nhật bài đăng, thay vì để lại thông tin trong nhận xét: Tôi đã tìm cách chạy 'gdb.exe' với rượu để làm cho nó hoạt động bình thường, nó trông giống như' wineconsole --backend = curses gdb.exe' . –

+0

Chỉ cần cố gắng trong emacs 'gdb.exe', nó chỉ là không sử dụng được: ( –

0

bạn có thể thử NetBeans. Đây là một mã nguồn mở miễn phí tốt và nền tảng hỗ trợ IDE.

-2

Chạy Windows trong máy ảo?

Nghiêm túc, câu hỏi của bạn là tốt, nhưng có lẽ không đáng để dành thời gian để tìm ra câu trả lời (đặc biệt là: vì không ai có câu trả lời sẵn sàng). Nếu bạn có công việc thực tế, Windows hoặc Windows bản địa trong máy ảo là câu trả lời.

+0

Tôi đang chạy Windows trong máy ảo, và đây không phải là ý tưởng hay cả, tôi nói, vì PC của tôi chỉ có RAM 2Gb. Tôi chắc chắn rằng điều này đáng để dành thời gian khi tôi tìm thấy nó , Tôi có thể sử dụng nó mọi lúc, mọi nơi. –