Chúng tôi có một Makefile dài và phức tạp trong hệ thống xây dựng của chúng tôi. Có cách nào tốt để theo dõi chính xác các mục tiêu nào được thực thi cho một lệnh gọi được đưa ra không?Cách theo dõi các mục tiêu của Makefile để khắc phục sự cố?
Trả lời
Sử dụng make -d
hoặc make --debug[=flags]
options:
‘-d’
In thông tin gỡ lỗi ngoài việc chế biến bình thường. Thông tin gỡ lỗi cho biết tệp nào đang được xem xét để làm lại, tệp nào được so sánh và với kết quả nào, tệp nào thực sự cần được làm lại, quy tắc ngầm được xem xét và được áp dụng — mọi thứ thú vị về cách quyết định phải làm gì. Tùy chọn
-d
tương đương với‘--debug=a’
(xem bên dưới).
‘--debug[=options]’
In thông tin gỡ lỗi ngoài xử lý bình thường. Có thể chọn nhiều cấp độ và loại đầu ra khác nhau. Không có đối số, hãy in mức gỡ lỗi “cơ bản”. Các đối số có thể có bên dưới; chỉ có ký tự đầu tiên được xem xét và các giá trị phải được phân cách bằng dấu phẩy hoặc dấu cách.
a
(tất cả) Tất cả các loại đầu ra gỡ lỗi được bật. Điều này tương đương với việc sử dụng ‘-d’.
b
(cơ bản) Gỡ lỗi cơ bản in từng mục tiêu được tìm thấy là lỗi thời và liệu bản dựng có thành công hay không.
v
(tiết) Cấp trên‘basic’
; bao gồm các thông báo về các tệp makefiles nào được phân tích cú pháp, các điều kiện tiên quyết không cần phải được xây dựng lại, v.v. Tùy chọn này cũng cho phép các thông báo‘basic’
.
i
(ẩn) In thông báo mô tả tìm kiếm quy tắc ngầm cho từng mục tiêu. Tùy chọn này cũng cho phép‘basic’
tin nhắn.
j
(công việc) In thông báo cung cấp chi tiết về yêu cầu các tiểu ban cụ thể.
m
(makefile) Theo mặc định, các thông báo trên không được bật trong khi cố gắng làm lại các tệp makefiles. Tùy chọn này cho phép tin nhắn trong khi xây dựng lại makefiles, quá. Lưu ý rằng tùy chọn‘all’
không bật tùy chọn này. Tùy chọn này cũng cho phép‘basic’
tin nhắn.
Một tùy chọn khác là sử dụng remake - phiên bản được vá của GNU Làm cho thêm báo cáo lỗi được cải thiện, khả năng theo dõi thực thi và trình gỡ lỗi.
ElectricMake có thể tạo ra một phiên bản XML-đánh dấu-up của build đăng nhập của bạn với rất nhiều thông tin mà có thể giúp trong tình huống này:
- Các đầy đủ lệnh dòng cho tất cả các lệnh gọi trong thời gian xây dựng (ngay cả những được đánh dấu là lệnh "im lặng" với công cụ sửa đổi
@
). - Nguồn gốc (makefile và số dòng) của các lệnh được gọi.
- Thời gian chạy của lệnh.
- Mối quan hệ phụ thuộc giữa các mục tiêu trong bản dựng.
- Mối quan hệ cấu trúc giữa các mục tiêu và đệ quy tạo ra trong bản dựng.
- Tệp đọc/ghi bằng các lệnh được gọi trong bản dựng.
Dưới đây là một mẫu đầu ra rằng:
<job id="J0824ab08" thread="5e72bb0" node="linbuild1-2" type="rule" name="../../i686_Linux/testmain/testmain.d" file="../config/rules.mak" line="109">
<command line="110">
<argv>echo Rebuilding '../../i686_Linux/testmain/testmain.d'</argv>
<output src="prog">Rebuilding ../../i686_Linux/testmain/testmain.d
</output>
</command>
<command line="111-114">
<argv>set -e; g++ -MM -w -DUSE_PROFILING -DUSE_LOGGING -DHAVE_UNIX -DHAVE_LINUX -I.. testmain.cpp \
| sed 's!\(testmain\)\.o[ :]*!../../i686_Linux/testmain/\1.o '../../i686_Linux/testmain/testmain.d' : !g' \
> '../../i686_Linux/testmain/testmain.d'; \
[ -s '../../i686_Linux/testmain/testmain.d' ] || touch '../../i686_Linux/testmain/testmain.d'</argv>
</command>
<opList>
<op type="read" file="/home/ericm/src/testmain/testmain.cpp"/>
<op type="read" file="/home/ericm/src/minidumper/ExceptionReport.h"/>
<op type="read" file="/home/ericm/src/util/ECAssert.h"/>
<op type="create" file="/home/ericm/i686_Linux/ecloud/testmain/testmain.d" found="0"/>
</opList>
<timing invoked="1.919926" completed="3.600491" node="linbuild1-2"/>
<waitingJobs idList="J0824ae38"/>
</job>
How to Quickly Navigate an Unfamiliar Makefile thấy một ví dụ của việc sử dụng các chú thích build log để tìm theo cách của bạn xung quanh một makefile.
Data Mining ElectricAccelerator Annotation cho biết cách bạn có thể sử dụng nhật ký tạo chú thích để tạo hóa đơn cho tài liệu xây dựng.
ElectricMake là GNU Hãy tương thích, do đó, nó có thể xử lý các tệp định dạng hoạt động với GNU.
Tuyên bố từ chối trách nhiệm: Tôi là kiến trúc sư và nhà phát triển hàng đầu của ElectricAccelerator.
- 1. Cách theo dõi các sự cố log4net
- 2. Khắc phục sự cố reportlab heisenbug
- 3. javascriptĐã khắc phục sự cố trên Phantomjs
- 4. khắc phục sự cố trong Mongoose 3
- 5. Khắc phục sự cố rò rỉ bộ nhớ Grails/Groovy?
- 6. cách khắc phục sự cố "System.AggregateException" xảy ra trong mscorlib.dll "
- 7. Khắc phục sự cố khi cài đặt Gherkin 2.1.5
- 8. Lỗi tên cột mơ hồ, cách khắc phục sự cố?
- 9. Cách khắc phục sự cố Xử lý rò rỉ trong C# Dịch vụ Windows
- 10. Làm cách nào để khắc phục sự cố kép của Kerberos?
- 11. Làm cách nào để khắc phục sự cố Lỗi thời gian chờ của MySQL với Rails?
- 12. Gợi ý khắc phục sự cố máy chủ TFS chậm
- 13. Cách khắc phục sự cố ORA-02049 và khóa sự cố nói chung với Oracle
- 14. Khắc phục sự cố OSError: out of pty devices
- 15. Tạo kho lưu trữ CRAN máy chủ web - khắc phục sự cố cấu trúc thư mục
- 16. Khắc phục sự cố tự động với màu UITextview
- 17. Làm cách nào để khắc phục sự cố giao diện người dùng WPF?
- 18. NSCFData có thể khắc phục sự cố không?
- 19. Cách khắc phục sự cố không đồng bộ của MongoDB/Node này?
- 20. Làm cách nào để khắc phục sự cố hiệu suất với câu lệnh SQL Oracle
- 21. Làm cách nào để khắc phục sự cố "Quá nhiều tệp mở" ở Hudson?
- 22. Phần mềm theo dõi sự cố của Google?
- 23. Khắc phục sự cố "require_once (../ bootstrap.php.cache): không mở được luồng: Không có tệp hoặc thư mục"
- 24. Có cách nào để khắc phục sự cố PEP-8 với pydev không?
- 25. Chia cho lỗi số không, làm cách nào để khắc phục sự cố này?
- 26. Cách khắc phục các trang bẩn của InnoDB?
- 27. Làm cách nào để khắc phục sự cố về Ngoại lệ và Ngoại lệ của Ống trong WCF?
- 28. Cách theo dõi sự cố chính xác cho sự cố trong iOS
- 29. Khắc phục sự cố làm nổi bật lỗi nội tuyến của Xcode?
- 30. tại sao pip xuống SLOW để tải xuống? (làm thế nào để khắc phục sự cố?)
Hey Eric! Tôi là người sử dụng điện. Thật tuyệt khi thấy bạn đăng bài. Số lượng các bản ghi gỡ lỗi và các tùy chọn được xây dựng thành emake khá đáng kinh ngạc. Sản phẩm tuyệt vời, muốn giới thiệu. – ThePosey