Có cách nào để ghi lại các lệnh, thực hiện các lệnh gọi để biên dịch chương trình không? Tôi biết các thông số -n
và -p
nhưng chúng không giải quyết được các điều kiện nếu chỉ in ra. Hoặc họ không làm việc, khi có các cuộc gọi để 'làm' chính nó trong Makefile.Đăng nhập các lệnh gọi thực hiện
Trả lời
Bạn có thể tìm thấy những gì bạn đang tìm kiếm trong nhật ký dựng chú thích được tạo bởi SparkBuild. Điều đó bao gồm các lệnh của mọi quy tắc được thực hiện trong bản dựng, có hay không "@" được sử dụng để ngăn không cho in từ dòng lệnh.
Nhận xét của bạn về điều kiện nếu có chút khó hiểu: bạn có đang nói về cấu trúc vỏ hay tạo cấu trúc không? Nếu bạn có nghĩa là cấu trúc vỏ, tôi không nghĩ rằng có bất kỳ cách nào để bạn có được chính xác những gì bạn đang sau ngoại trừ bằng cách sử dụng strace như những người khác mô tả. Nếu bạn muốn tạo cấu trúc, thì đầu ra bạn thấy là kết quả của biểu thức điều kiện được giải quyết.
Bạn đã thử với tham số -d (gỡ lỗi) chưa?
Lưu ý rằng bạn có thể kiểm soát số lượng thông tin bằng --debug thay thế. Ví dụ, --debug = a (giống như -d), hoặc --debug = b để chỉ hiển thị infos cơ bản ...
Không quên chuyển hướng stdout sang tệp, làm cho -d tạo ra rất nhiều thông tin rất nhanh chóng. –
Bạn có thể thử đăng nhập execve
cuộc gọi với strace
strace -f -e execve make ...
Đó là một công cụ tốt. Chưa nghe về nó. Nhưng nó tạo ra rất nhiều đầu ra, tôi không cần trong trường hợp này. – Customizer
Strace là một công cụ để theo dõi tất cả các cuộc gọi hệ thống (trong ví dụ của tôi giới hạn chỉ với execv), vì vậy có nó sẽ có thể cung cấp cho bạn nhiều hơn mức tối thiểu bạn đang tìm kiếm (cụ thể là nó sẽ in tất cả (thất bại) tất cả các thư mục $ PATH). – hlovdal
Make viết mỗi lệnh thực thi nó vào giao diện điều khiển, vì vậy
make 2>&1 | tee build.log
sẽ tạo ra một tập tin đăng nhập tên build.log
như một tác dụng phụ, trong đó có những thứ tương tự ghi vào màn hình. (man tee
để biết thêm chi tiết.)
2>&1
kết hợp đầu ra tiêu chuẩn và lỗi thành một luồng. Nếu bạn không bao gồm điều đó, đầu ra thường xuyên sẽ đi vào tệp nhật ký nhưng các lỗi sẽ chỉ đi tới bàn điều khiển. (make
chỉ ghi vào stderr khi một lệnh trả về một mã lỗi.)
Nếu bạn muốn ngăn chặn đầu ra hoàn toàn ủng hộ việc khai thác gỗ vào một tập tin, nó thậm chí còn đơn giản hơn:
make 2>&1 > build.log
Bởi vì những chỉ chụp giao diện điều khiển đầu ra chúng hoạt động tốt với đệ quy make
.
Lệnh được bắt đầu bằng @ (im lặng thực hiện) không được bao gồm trong nhật ký này, thật không may. –
này
make SHELL="sh -x"
sẽ gây ra vỏ (mà làm cho gọi để đánh giá cấu trúc vỏ) để in thông tin về những gì nó làm, cho phép bạn xem có bao bất kỳ điều kiện trong các lệnh shell đang được đánh giá.
Đây là câu trả lời hữu ích – tonylo
- 1. Thực hiện đăng nhập cùng với suPHP
- 2. FBLoginView: đăng nhập không được thực hiện
- 3. Lệnh Vim đăng nhập
- 4. cách thực hiện đăng nhập php hoặc phiên xác thực
- 5. đo thời gian thực hiện các cuộc gọi dòng lệnh
- 6. Thực hiện đăng nhập tốt nhất trong PHP/MySQL/Apache
- 7. Cách tốt nhất để thực hiện lệnh cấm sau khi có quá nhiều lần đăng nhập
- 8. Thực hiện đăng nhập xã hội trong Flask
- 9. Làm thế nào Orchard CMS thực hiện việc đăng nhập?
- 10. C# ASP.NET Đăng nhập một lần Thực hiện
- 11. Cách thực hiện yêu cầu ajax để đăng nhập
- 12. Thực hiện một Symfony2 đăng nhập một lần
- 13. Facebook Đăng nhập Thực tiễn tốt nhất
- 14. C++ Thực hiện các lệnh CMD
- 15. Vòng đăng nhập xác thực mẫu Asp.net
- 16. Đăng nhập Facebook dưới dạng bổ sung cho thông tin đăng nhập hiện tại?
- 17. làm thế nào để thực hiện auth đăng nhập trong Node.js
- 18. Webapp2 để xác thực và đăng nhập
- 19. Cách chạy tập lệnh sau khi xác thực đăng nhập người dùng trong linux
- 20. Để đăng nhập hoặc không đăng nhập?
- 21. "Đăng nhập" hoặc "Đăng nhập" hoặc "Đăng nhập"
- 22. Làm thế nào để thực hiện các lệnh gọi API Windows bằng Python 3.1?
- 23. Làm cách nào để thực hiện các lệnh gọi nội tuyến trong Objective-C?
- 24. Đăng nhập WordPress trong jQuery Popup - Cách xác thực đăng nhập bằng jQuery Ajax?
- 25. Thực hiện các lô lệnh bằng redis cli
- 26. PowerShell: lỗi thực hiện lệnh bằng cách sử dụng lệnh gọi?
- 27. Đăng nhập với khách hàng tự động đăng nhập
- 28. Windows tự động Nhiều người dùng đăng nhập dòng lệnh
- 29. Thực hiện các cuộc gọi lồng nhau để "thực hiện" với thư viện Fabric của Python
- 30. Thực hiện lệnh in cmake trước khi thực hiện
Chúng có vẻ là cấu trúc vỏ.Nhưng tôi không biết, tại sao ai đó muốn sử dụng các cấu trúc shell trong Makefiles, khi bạn có thể sử dụng các cấu trúc Makefile. Họ có tốt hơn theo cách nào đó không? – Customizer
Tôi SparkBuild trông thú vị. Tôi chắc chắn sẽ xem xét điều này. – Customizer
Câu hỏi về cấu trúc vỏ so với cấu trúc tạo phụ thuộc vào những gì bạn đang cố gắng thực hiện. Đối với một điều, có những thứ bạn có thể làm với các cấu trúc shell mà bạn không thể làm với các cấu trúc, như kiểm tra xem một tệp có thể đọc được hay thực thi được không. Đối với cái khác, chúng được đánh giá tại các thời điểm khác nhau đối với các lệnh khác trong thân quy tắc: tạo các cấu trúc được đánh giá trước khi bất kỳ lệnh nào được thực thi, nhưng cấu trúc vỏ sẽ được đánh giá tại chỗ khi các lệnh được thực thi. –