2010-04-24 45 views
7

Tôi thử cặp Eclipse + PyDev cho một số tác phẩm của tôi. (Eclipse v3.5.0 + PyDev v1.5.6) Tôi không thể tìm ra cách để trưng ra tất cả các biến của mình cho bàn điều khiển PyDev (Thông qua giao diện điều khiển PyDev -> Console cho tùy chọn trình soạn thảo hiện tại) Tôi sử dụng một mã đơn giản để mô tả vấn đề . Khi tôi từng bước đi qua mã tôi không thể truy cập biến "x" của tôi từ giao diện điều khiển. Nó được xem trên tab Biến, nhưng đó không thực sự là những gì tôi muốn.Gỡ lỗi Python trong Eclipse + PyDev

Mọi trợ giúp đều được đánh giá cao.

Xem ảnh chụp màn hình của tôi cho mô tả tốt hơn:

alt text http://img541.imageshack.us/img541/4514/eclipsedebug.png

EDIT:

Giả sử thêm một func đơn giản như:

def myfunc(x): 
    return x**x 

Khi tôi gỡ lỗi với chức năng được thêm vào trong mã tôi có thể truy cập myfunc từ bảng điều khiển dễ dàng. (Type myfunc và nó sẽ có sẵn sau khi thực hiện tự động này:.

>>> from part2.test import myfunc 
>>> myfunc 

Sau đó, khi tôi làm myfunc (5) nó hoạt động giống như trong trình thông dịch Python Nó sẽ rất hữu ích để truy cập các biến trong thời trang tương tự cho Tôi có mảng lớn và tôi thực hiện các phép thử và hoạt động khác nhau trong quá trình gỡ lỗi như: Nhận x của tôi và làm x.sum(), sau đó làm x [:: 10], hoặc chuyển đổi hoạt động với các mảng khác. , thử nghiệm, v.v ...

Hy vọng sẽ có giải pháp tốt hơn.

+0

Tôi đã sử dụng PyDev trong nhiều tháng và không biết bạn có thể làm điều này. (Không bao giờ cần nó, tôi đoán). Tôi đang nghĩ gì vậy? –

+0

Xem các câu trả lời sau: - http://stackoverflow.com/questions/2045551/interactive-pydev-console-at-breakpoint - http://stackoverflow.com/questions/271625/interactive-console-using-pydev-in- eclipse –

+0

OK, một số có vẻ hữu ích. Bàn điều khiển Debug vẫn không mang lại cảm giác thực sự khi sử dụng trình thông dịch Python, nơi bạn có thể hoàn thành tab và tương tác với các biến/nội dung một cách dễ dàng và thuận tiện. –

Trả lời

2

Đối với loại gỡ lỗi khám phá tôi thích để sử dụng pdb, trình gỡ rối kèm theo pin. Tôi đã không sử dụng nó bên trong PyDev vì vậy tôi không biết làm thế nào nó sẽ phù hợp với nhau. Tôi đoán là nó sẽ làm những gì bạn mong đợi. Ví dụ về cách sử dụng của nó:

import pdb 

def myfunc(x): 
    pdb.set_trace() 
    return x**x 

Điều này sẽ phá vỡ ngay trước khi thực hiện câu lệnh trả về và cho phép bạn sử dụng toàn bộ câu lệnh Pythonic để tìm hiểu điều gì đang xảy ra. Tôi sử dụng nó như một tuyên bố in tương tác: thiết lập nơi mà tôi muốn đi sâu vào, kiểm tra các giá trị và tìm kết quả, và bước qua để xem nó xảy ra. Có lẽ đây là cách gỡ lỗi, nhưng đôi khi bạn cần thêm thông tin trước khi bạn có thể đưa ra quyết định ít lười biếng :-)

Trang tôi thường tham chiếu là Python Conquers The Universe cũng liên kết một số nguồn thông tin khác.

+1

Cảm ơn bạn đã đề xuất. Nó chỉ đánh bại mục đích của việc sử dụng Eclipse :) Nhảy vào định nghĩa các hàm/phương thức là một tính năng tuyệt vời trong Eclipse, điều này càng thúc đẩy tôi ở trong đó hơn là sử dụng chu trình phát triển dựa trên IPython + VIM. Tôi chắc chắn một người nào đó (Fabio có thể :)) sẽ đề xuất một cách để đưa các biến của tôi vào không gian tên cục bộ/toàn cục trong khi gỡ lỗi trong Eclipse. –

+0

Lưu ý rằng bạn có thể làm tương tự trong PyDev trong bối cảnh điểm ngắt (xem http://pydev.org/manual_adv_debug_console.html). –

+0

Tôi sẽ không nói nó đánh bại mục đích ... nhưng tôi thấy quan điểm của bạn. Tôi đã kiểm tra và pdb hoạt động tốt trong PyDev, và nó thực sự sẽ liên kết với nguồn khi PyDev thấy chú thích số dòng. Xin lỗi PyDev đã không bắt kịp với khả năng sử dụng chung của Eclipse, mặc dù tôi nghi ngờ nó sẽ còn xa hơn một năm kể từ bây giờ. –

8

Cập nhật:

Trong các phiên bản PyDev mới nhất, nó có thể kích chuột phải vào một khung trong ngăn xếp và chọn PyDev> Debug console để có giao diện điều khiển tương tác với nhiều chức năng liên quan đến một bối cảnh trong một phiên debug.


Thật không may, giao diện điều khiển thực tế tương tác, đó sẽ là cách ưa thích chơi với mã (với mã hoàn thành, vv - http://pydev.org/manual_adv_interactive_console.html) không có kết nối đến một phiên debug ngay bây giờ (điều này được lên kế hoạch nhưng vẫn không được thực hiện).

Tuy nhiên, với bảng điều khiển 'đơn giản' có sẵn, bạn vẫn có thể kiểm tra và chơi tương tác với các biến có sẵn trong phạm vi điểm ngắt: http://pydev.org/manual_adv_debug_console.html (tương tự như bạn có với pdb - nó chỉ là vấn đề nhập mã trong bảng điều khiển khả dụng sau khi điểm ngắt được nhấn).

Chúc mừng,

Fabio

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