trace --- Theo dõi hoặc theo dõi việc thực thi câu lệnh Python¶
Source code: Lib/trace.py
Mô-đun trace cho phép bạn theo dõi việc thực hiện chương trình, tạo danh sách bao phủ câu lệnh có chú thích, in mối quan hệ người gọi/người gọi và liệt kê các chức năng được thực hiện trong quá trình chạy chương trình. Nó có thể được sử dụng trong một chương trình khác hoặc từ dòng lệnh.
Xem thêm
- Coverage.py
Một công cụ bảo hiểm phổ biến của bên thứ ba cung cấp đầu ra HTML cùng với các tính năng nâng cao như bảo hiểm chi nhánh.
Sử dụng dòng lệnh¶
Mô-đun trace có thể được gọi từ dòng lệnh. Nó có thể đơn giản như
python -m trace --count -C . somefile.py ...
Ở trên sẽ thực thi somefile.py và tạo danh sách có chú thích của tất cả các mô-đun Python được nhập trong quá trình thực thi vào thư mục hiện tại.
- --help¶
Hiển thị mức sử dụng và thoát.
- --version¶
Hiển thị phiên bản của mô-đun và thoát.
Added in version 3.8: Đã thêm tùy chọn --module cho phép chạy mô-đun thực thi.
Tùy chọn chính¶
Ít nhất một trong các tùy chọn sau phải được chỉ định khi gọi trace. Tùy chọn --listfuncs loại trừ lẫn nhau với các tùy chọn --trace và --count. Khi --listfuncs được cung cấp, cả --count và --trace đều không được chấp nhận và ngược lại.
- -c, --count¶
Tạo một tập hợp các tệp liệt kê có chú thích sau khi hoàn thành chương trình cho biết số lần mỗi câu lệnh được thực thi. Xem thêm
--coverdir,--filevà--no-reportbên dưới.
- -t, --trace¶
Hiển thị các dòng khi chúng được thực thi.
- -l, --listfuncs¶
Hiển thị các chức năng được thực hiện bằng cách chạy chương trình.
- -r, --report¶
Tạo danh sách chú thích từ lần chạy chương trình trước đó sử dụng tùy chọn
--countvà--file. Điều này không thực thi bất kỳ mã nào.
- -T, --trackcalls¶
Hiển thị các mối quan hệ gọi điện được hiển thị bằng cách chạy chương trình.
sửa đổi¶
- -f, --file=<file>¶
Tên của một tập tin để tích lũy số lượng qua nhiều lần chạy theo dõi. Nên sử dụng với tùy chọn
--count.
- -C, --coverdir=<dir>¶
Thư mục chứa các tập tin báo cáo. Báo cáo bảo hiểm cho
package.moduleđược ghi vào tệpdir/package/module.cover.
- -m, --missing¶
Khi tạo danh sách có chú thích, hãy đánh dấu các dòng không được thực thi bằng
>>>>>>.
- -s, --summary¶
Khi sử dụng
--counthoặc--report, hãy viết một bản tóm tắt ngắn gọn vào stdout cho mỗi tệp được xử lý.
- -R, --no-report¶
Không tạo danh sách có chú thích. Điều này rất hữu ích nếu bạn dự định thực hiện một số lần chạy với
--countvà sau đó tạo ra một tập hợp các danh sách có chú thích ở cuối.
- -g, --timing¶
Tiền tố mỗi dòng có thời gian kể từ khi chương trình bắt đầu. Chỉ được sử dụng trong khi truy tìm.
Bộ lọc¶
Các tùy chọn này có thể được lặp lại nhiều lần.
- --ignore-module=<mod>¶
Bỏ qua từng tên mô-đun đã cho và các mô-đun con của nó (nếu đó là một gói). Đối số có thể là danh sách các tên được phân tách bằng dấu phẩy.
- --ignore-dir=<dir>¶
Bỏ qua tất cả các mô-đun và gói trong thư mục được đặt tên và thư mục con. Đối số có thể là danh sách các thư mục được phân tách bằng
os.pathsep.
Giao diện lập trình¶
- class trace.Trace(count=1, trace=1, countfuncs=0, countcallers=0, ignoremods=(), ignoredirs=(), infile=None, outfile=None, timing=False)¶
Tạo một đối tượng để theo dõi việc thực thi một câu lệnh hoặc biểu thức. Tất cả các tham số là tùy chọn. count cho phép đếm số dòng. trace cho phép theo dõi thực thi dòng. countfuncs cho phép liệt kê các hàm được gọi trong quá trình chạy. countcallers cho phép theo dõi mối quan hệ cuộc gọi. ignoremods là danh sách các mô-đun hoặc gói cần bỏ qua. ignoredirs là danh sách các thư mục có mô-đun hoặc gói nên được bỏ qua. infile là tên của tệp để đọc thông tin đếm được lưu trữ. outfile là tên của tệp để ghi thông tin đếm được cập nhật. timing cho phép dấu thời gian liên quan đến thời điểm bắt đầu hiển thị quá trình theo dõi.
- run(cmd)¶
Thực thi lệnh và thu thập số liệu thống kê từ quá trình thực thi với các tham số theo dõi hiện tại. cmd phải là một đối tượng chuỗi hoặc mã, phù hợp để truyền vào
exec().
- runctx(cmd, globals=None, locals=None)¶
Thực thi lệnh và thu thập số liệu thống kê từ quá trình thực thi với các tham số theo dõi hiện tại, trong môi trường cục bộ và toàn cầu đã xác định. Nếu không được xác định, globals và locals mặc định là từ điển trống.
- runfunc(func, /, *args, **kwds)¶
Gọi func với các đối số đã cho dưới sự kiểm soát của đối tượng
Tracevới các tham số theo dõi hiện tại.
- results()¶
Trả về một đối tượng
CoverageResultschứa kết quả tích lũy của tất cả các lệnh gọi trước đó tớirun,runctxvàrunfunccho phiên bảnTraceđã cho. Không thiết lập lại kết quả theo dõi tích lũy.
- class trace.CoverageResults¶
Một vùng chứa kết quả phủ sóng, được tạo bởi
Trace.results(). Không nên được tạo trực tiếp bởi người dùng.- update(other)¶
Hợp nhất dữ liệu từ một đối tượng
CoverageResultskhác.
- write_results(show_missing=True, summary=False, coverdir=None, *, ignore_missing_files=False)¶
Viết kết quả bảo hiểm. Đặt show_missing để hiển thị các dòng không có lượt truy cập. Đặt summary để đưa vào đầu ra bản tóm tắt phạm vi bảo hiểm cho mỗi mô-đun. coverdir chỉ định thư mục mà các tệp kết quả bảo hiểm sẽ được xuất ra. Nếu
None, kết quả của mỗi tệp nguồn sẽ được đặt trong thư mục của nó.Nếu ignore_missing_files là
True, số lượng phạm vi phủ sóng cho các tệp không còn tồn tại sẽ bị bỏ qua một cách âm thầm. Nếu không, một tệp bị thiếu sẽ tạo raFileNotFoundError.Thay đổi trong phiên bản 3.13: Đã thêm tham số ignore_missing_files.
Một ví dụ đơn giản thể hiện việc sử dụng giao diện lập trình:
hệ thống nhập khẩu
dấu vết nhập khẩu
# create một đối tượng Trace, cho nó biết những gì cần bỏ qua và có nên
# do truy tìm hoặc đếm dòng hoặc cả hai.
tracer = dấu vết.Trace(
bỏ qua=[sys.prefix, sys.exec_prefix],
dấu vết=0,
đếm=1)
# run lệnh mới sử dụng công cụ theo dõi đã cho
tracer.run('main()')
# make một báo cáo, đặt đầu ra vào thư mục hiện tại
r = tracer.results()
r.write_results(show_missing=True, coverdir=".")