2012-10-24 11 views
6

Tôi muốn có thể điều tra và theo dõi thông qua mã nguồn Python để xem mọi thứ hoạt động như thế nào dưới mui xe, và để giải quyết những nghi ngờ về các tính năng không được ghi chép rõ ràng trong tài liệu tham chiếu.Cố gắng bắt đầu truy tìm các tính năng và hành vi của Python thông qua mã nguồn

Tôi muốn có một số thông tin bắt đầu về cách thực hiện điều này, vì nó khá áp đảo. Tôi có thể đọc C, vì vậy tôi có điều đó cho tôi. Bên cạnh đó, nhiệm vụ có vẻ hơi đáng sợ mà không cần ít nhất một chút hướng dẫn.

Ví dụ: giả sử tôi muốn ghi lại cách tham chiếu thuộc tính được triển khai bằng Python. Làm thế nào tôi sẽ đi về truy tìm những gì xảy ra khi một biểu thức tham chiếu thuộc tính có mặt trong một chương trình Python?

Có lẽ tổng quan về cách mã nguồn được tổ chức và những gì từng phần sẽ hữu ích, cùng với một số ví dụ "walk = thru", chẳng hạn như trường hợp "tham chiếu thuộc tính".

Tôi đã tìm kiếm thông tin về điều này nhưng dường như không có nhiều.

Trả lời

1

Có lẽ trình gỡ lỗi Python tốt sẽ giúp ích? Tôi sẽ thử sử dụng PyDev plugin for Eclipse. Điều đó sẽ giúp bạn theo dõi những phương pháp đặc biệt của python (như __getattr__() hoặc __setattr__()) được gọi khi bạn tham chiếu thuộc tính của một lớp. Nếu bạn cần đi sâu hơn, bạn có thể xem số Python C API hoặc thậm chí là Python C Source Code.

+0

OP được hỏi về một giới thiệu cho các nguồn Python C! – XORcist

+0

Cảm ơn bạn, tôi đã không nghĩ đến việc sử dụng một trình gỡ lỗi cho việc này. Tôi sẽ xem xét khả năng này (mặc dù tại thời điểm này tôi không sử dụng Eclipse.) Đối với API C và mã nguồn, điều đó chắc chắn sẽ là lý tưởng. Chỉ cần tìm cách ít đau đớn nhất để bắt đầu với điều đó (có điều gì giống như vậy không?) –

+2

Có vẻ như bạn có thể gỡ lỗi ở cấp nguồn C bằng cách sử dụng [GDB với Python] (http://wiki.python.org/moin/DebuggingWithGdb) – Josh

1

Có một mô-đun theo dõi trong thư viện chuẩn python. Nó có một số chế độ, và có thể được sử dụng để in tất cả các dòng mã python vì nó được thực hiện như thế này:

python -m trace -t myscript.py 

Xem http://docs.python.org/library/trace.html

+0

Điều này thật tuyệt vời, cảm ơn. Tôi sẽ xem xét điều này ngay lập tức và xem thông tin nào tôi có thể thu thập với nó. Tuy nhiên, ám ảnh cưỡng chế trong tôi vẫn muốn biết làm thế nào để có thể đào sâu vào mã. Không chắc nó sẽ là một nỗ lực thực tế, nhưng tôi có thể thấy nó là như vậy nếu chỉ cho vui. –

+0

Hãy dùng thử này. Nó chắc chắn hữu ích, nhưng tôi không chắc nó có mức độ yêu cầu chi tiết. Ví dụ, tôi không nhận được các cuộc gọi phương thức đặc biệt python (như khi khởi tạo một đối tượng và vv.) Có thể có một tùy chọn bạn có thể đặt trong dấu vết cho điều này mặc dù tôi không thấy ngay lập tức. Tôi sẽ xem qua một chút. –