2013-03-22 27 views
5

Tôi đang cố di chuyển từ Matlab sang python. Một trong những điều tốt đẹp về Matlab là khi gỡ lỗi tôi có thể đặt một điểm ngắt trong một số mã và làm điều gì đó để gọi mã đó tạo thành dòng lệnh. Sử dụng PyCharm + IPython Tôi đã không tìm thấy một cách để làm điều này trong Python. Có vẻ như tôi phải chạy toàn bộ tập lệnh trong chế độ gỡ lỗi để thực hiện bất kỳ việc gỡ lỗi nào thay vì có thể thực hiện điều đó từ một lệnh đơn giản. Tôi cho rằng tôi có thể viết kịch bản một dòng với lệnh mà tôi quan tâm, nhưng có vẻ như có một cách tốt hơn. Cách Python làm điều này là gì?Gỡ lỗi với các điểm ngắt từ bảng điều khiển trong Python

Trả lời

3

Hãy thử sử dụng python debugger

b(reak) [[filename:]lineno | function[, condition]] 

hoặc

pdb.set_trace(); 

hướng dẫn chi tiết hơn có thể found here.

0

Vì bạn đã đề cập bạn đang sử dụng ipython, bạn cũng có thể kiểm tra ipdb.

Bạn phải cài đặt nó trước tiên qua pip hoặc easy_install. Vv:

pip install ipdb 

Cách sử dụng giống như pdb. Bảng điều khiển ipython sẽ bật ra nơi bạn đặt ipdb.set_trace() từ nơi bạn có thể kiểm tra/thay đổi cục bộ biến toàn cục, kiểm tra tài liệu và loại của chúng, bước vào mã của các hàm đến (với 's', bạn sẽ đi đến định nghĩa code123()), vv

import ipdb; 

code000() 
ipdb.set_trace(); 
code123() 

Ngoài ra một mẹo về cách để có được những chức năng của ? từ ipython (liên quan đến nhận tài liệu của các chức năng và các module trong khi ở các debugger). This answer.

+0

Ok cảm ơn, hoạt động như bạn nói. Có cách nào để làm cho nó hoạt động với một trình gỡ rối đồ họa IDE. Tôi khá quen với trình gỡ rối đồ hoạ đẹp mắt trong Matlab và tìm trình gỡ lỗi bảng điều khiển một chút không thân thiện ... – user1507844

+0

Có một trình gọi là 'winpdb'. – TheMeaningfulEngineer

+0

Xin lỗi, đã giải thích sai câu hỏi của bạn. Không biết pycharm và một IDE, nghĩ rằng nó chỉ là một số khuôn khổ bạn đang sử dụng :) – TheMeaningfulEngineer

2

Bạn đã thử Spyder ??? Đây là một IDE nguồn mở trông rất giống với Matlab. Nó cũng cung cấp trình gỡ lỗi mà bạn muốn. https://code.google.com/p/spyderlib/

PS: Tôi cũng đang di chuyển sang python, nhưng tôi tránh những thứ như thế vì tôi muốn bắt đầu với một tâm trí trống rỗng. :) Nhưng tôi đã đọc rất nhiều từ những văn bản từ Matlab đến Numpy ...

+1

Vâng, tôi đã nhìn vào nó. Có vẻ như một bước đi đúng hướng nhưng không nơi nào gần như được đánh bóng như Matlab. Tôi nghĩ rằng rất nhiều người sẽ chuyển sang Python từ Matlab trong vài năm tới. Có một cơ hội lớn để tạo một môi trường thân thiện với người dùng được đánh bóng thân thiện với Python bắt chước Matlab. Tin tưởng rằng sẽ có một lượng lớn công việc phát triển b/c không giống như Matlab, không cần phải làm việc trên ngôn ngữ, chỉ kết hợp các gói và tạo môi trường IDE/nghiên cứu tốt đẹp – user1507844

+0

PS: Tôi đã tải xuống Spyder :) và thấy các biến không gian làm việc của tôi. –

+0

Làm thế nào bạn tìm thấy nó so với Matlab cho một IDE? Làm thế nào bạn đang tìm kiếm Python nói chung? – user1507844

4

Tôi muốn khuyên bạn nên sử dụng Python Tools for Visual Studio. Nó là nguồn mở và miễn phí, và mặc dù Visual Studio rõ ràng không phải là nguồn mở, có ("PTVS Integrated") đi kèm với một phiên bản miễn phí và rất chức năng của Visual Studio với mục đích thương mại được cho phép. Ngoài ra, sinh viên và nhân viên của hầu hết các cơ sở giáo dục sẽ có quyền truy cập miễn phí vào Visual Studio Ultimate qua Dreamspark.

Nếu chương trình của bạn bị dừng tại điểm ngắt, bạn có thể mở "Python Debug Interactive" (từ công cụ-> công cụ python), sẽ mở một trình bao python tương tác với quyền truy cập vào tất cả các biến có sẵn trong không gian tên chương trình của bạn tại breakpoint, giống như cách bạn có thể làm trong Matlab.

Di chuột qua các biến bằng chuột trong mã nguồn cũng hiển thị giá trị, hiển thị cửa sổ "địa phương" nhiều hoặc ít mô phỏng trình xem không gian làm việc trong Matlab và bạn cũng có thể "xem" các biến cụ thể. Tôi không biết nếu nó là an toàn để chỉnh sửa các biến thông qua giao diện này mặc dù, sử dụng cẩn thận!

Thật không may PTVS không có điểm ngắt lồng nhau, đó là một tính năng khá hữu ích trong trình gỡ lỗi Matlab. Vì vậy, nếu bạn dừng lại ở điểm ngắt và bạn gọi một phương thức từ cửa sổ tương tác gỡ lỗi, bất kỳ điểm ngắt nào trong phương thức sẽ không hoạt động. Xem this related question.

Lịch sử lệnh dựa trên phím mũi tên trong trình gỡ lỗi khá nguyên thủy so với Matlab hoặc ipython và Intellisense không tốt bằng ngôn ngữ gốc .net, nhưng tôi đã sử dụng nó một cách kiên cố cho nửa năm hoặc hơn bây giờ, và không thực sự cảm thấy như tôi đang mất tích nhiều từ Matlab, khác hơn là tài liệu tuyệt vời. Một điều khác cần lưu ý là hiệu suất thực thi mã khi ở chế độ gỡ lỗi chậm hơn, vì vậy tôi khuyên bạn nên chạy mã mà không cần chế độ gỡ lỗi (bằng cách sử dụng "Ctrl + F5" thay vì "F5") cho tốt nhất hiệu suất hoặc mixed mode debugger mới nếu bạn cần cả điểm ngắt và hiệu suất tốt.

1

Tôi đã được chuyển từ MATLAB và R sang python. Tôi đã thử các trình soạn thảo khác nhau để tôi có thể cung cấp cho bạn một số lời khuyên.

1- Spyder là gần gũi hơn với MATLAB nhưng ấn tượng của tôi là nó không phải là rất tốt. Nó thường sụp đổ khi tôi bắt đầu chạy mô phỏng dài với rất nhiều dữ liệu. Nếu bạn chưa quen với python, tôi khuyên bạn nên sử dụng cái này một lúc và sau đó chuyển sang thứ khác.

2- chế độ python emacs. Hoạt động rất tốt. Theo tôi, rất khó để cấu hình và có lẽ không phải là lựa chọn tốt nhất nếu bạn không quen với python.

3- pycharm. Tôi vừa bắt đầu sử dụng pycharm và nó có vẻ rất tốt (điều này nhắc nhở Rstudio của tôi). Tôi không nghĩ rằng điều này hỗ trợ một giao diện điều khiển tương tác như một bên trong spyder hoặc emacs. Bạn vẫn có thể nhận được một cái gì đó tương tự trong chế độ gỡ lỗi

4- Rất nhiều người thích máy tính xách tay ipython nhưng tôi nghĩ rằng đây không phải là lựa chọn tốt cho mã dài. Nó là tốt nếu bạn muốn một cái gì đó dễ dàng để hình dung.

+0

Tôi đã sử dụng PyCharm và khá hài lòng với nó. Có một số vé xuất sắc để hỗ trợ quảng cáo cho iPython, cửa sổ biến thời gian thực, v.v. sẽ cung cấp cho nó Matlab hoặc RStudio giống như chức năng ngoài IDE tuyệt vời mà nó có. – user1507844

+0

Bạn đã có thể sử dụng bảng điều khiển tương tác chưa? – Donbeo

+0

Vâng, nó đã không làm việc cho đồ thị cuối cùng tôi đã cố gắng và dường như nghẹt thở trên một số công cụ xử lý song song, nhưng dường như làm việc tốt cho tất cả mọi thứ khác. – user1507844

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