2012-11-01 45 views
6

Tôi có một dự án C++ với mặt trước Python được tạo bởi SWIG, mà tôi xây dựng bằng CMake. Bây giờ tôi đang cố gắng tìm một cách thuận tiện để gỡ rối mã Python/C++ hỗn hợp của mình. Tôi có thể nhận được một ngăn xếp dấu vết của các lỗi bằng cách sử dụng gdb, nhưng tôi muốn có một số tính năng ưa thích hơn như khả năng bước qua mã và thiết lập các điểm ngắt, ví dụ bằng cách sử dụng Eclipse.Gỡ lỗi mã Python/C++ hỗn hợp trong Eclipse

Sử dụng trình tạo Eclipse cho CMake Tôi có thể tạo một dự án mà tôi có thể nhập vào Eclipse. Điều này làm việc tốt và tôi cũng có thể bước qua các thực thi C++ thuần túy. Nhưng sau đó vấn đề bắt đầu.

Trước hết, tôi không thể xây dựng giao diện người dùng Python từ bên trong Eclipse. Từ dòng lệnh, tôi chỉ làm "make python", nhưng không có đích "python" trong dự án Eclipse. Thứ hai, một khi tôi đã biên dịch front-end Python, tôi không có đầu mối làm thế nào để bước qua một kịch bản Python có chứa các cuộc gọi đến các lớp C++ được bao bọc của tôi. Eclipse đã gỡ lỗi cả cho Python và cho C++, nhưng chúng có thể được kết hợp không?

+0

Nếu bạn không liên kết cụ thể với Eclipse (do sở thích cá nhân hoặc nhu cầu chạy trên Linux hoặc OS X), Công cụ Python cho Visual Studio 2.0 beta có chính xác tính năng mà bạn mô tả: https: // pytools .codeplex.com/wikipage? title = Chế độ hỗn hợp% 20debugging –

Trả lời

2

một số tính năng ưa thích hơn, chẳng hạn như khả năng bước qua mã và đặt breakpoint, ví dụ sử dụng Eclipse

cách là những tính năng "lạ mắt"? Bạn đã có thể làm điều đó trong pdb cho Python, hoặc gdb cho C++.

Tôi khuyên bạn nên chạy mã python với pdb (hoặc sử dụng pdb.set_trace() để ngắt thực thi tại một điểm thú vị) và đính kèm gdb vào quá trình trong một thiết bị đầu cuối riêng biệt. Sử dụng pdb để thiết lập các điểm ngắt và bước qua, mã Python của bạn. Sử dụng gdb để thiết lập các điểm ngắt và bước qua, mã C++ của bạn. Khi pdb bước qua một cuộc gọi gốc, gdb sẽ tiếp quản. Khi gdb continue cho phép thực thi Python tiếp tục, pdb sẽ tiếp quản.

Điều này sẽ cho phép bạn chuyển đổi giữa các điểm ngắt C++ và Python mà không cần phải theo dõi thông dịch viên.


Disclaimer: Tôi hầu như nghĩ IDE là rác bloatware, vì vậy nếu Eclipse không có một cách tốt để tích hợp này, tôi sẽ không biết về nó anyway.

+1

Cảm ơn rất nhiều về mẹo hữu ích này. Tôi sẽ thử điều đó. Vì câu hỏi ban đầu (về Eclipse) vẫn chưa được trả lời, tôi sẽ không đánh dấu câu trả lời này là câu trả lời. Cảm ơn một lần nữa! – Joel