2008-09-10 67 views
46

Tôi có một mật mã kế thừa lớn với các tệp makefiles rất phức tạp, với rất nhiều biến. Đôi khi tôi cần phải thay đổi chúng, và tôi thấy rằng rất khó để tìm ra lý do tại sao thay đổi này không hoạt động theo cách tôi mong đợi. Những gì tôi muốn tìm là một công cụ cơ bản thực hiện quá trình gỡ lỗi "làm", nơi tôi sẽ cung cấp cho nó một thư mục và tôi có thể thấy giá trị của các biến khác nhau tại các điểm khác nhau trong quá trình. Không có cờ gỡ lỗi nào có vẻ hiển thị cho tôi những gì tôi muốn, mặc dù có thể tôi đang thiếu thứ gì đó. Có ai biết cách để làm điều này?Công cụ để gỡ lỗi makefiles

Trả lời

48

Bạn đã xem kết quả từ chạy make -nmake -np và biggie make -nd?

Bạn đang sử dụng phiên bản khá mới của gmake?

Bạn đã xem chương miễn phí trên Debugging Makefiles có sẵn trên trang web của O'Reilly cho cuốn sách tuyệt vời của họ "Quản lý dự án với GNU Make" (Amazon Link).

3

Tôi không biết bất kỳ cờ cụ thể nào thực hiện chính xác những gì bạn muốn, nhưng

--print-data-base
có vẻ như hữu ích.

+0

hoặc '-p' làm bí danh – sercxjo

20

Tôi chắc chắn rằng remake là những gì bạn đang tìm kiếm.

Từ trang chủ:

remake là một phiên bản vá và hiện đại hóa của GNU làm cho tiện ích cho biết thêm được cải thiện báo cáo lỗi, khả năng để theo dõi thực hiện một cách dễ hiểu, và một trình gỡ lỗi.

Nó có giao diện gdb-like và được hỗ trợ bởi mdb-mode (x) emacs có nghĩa breakponts, đồng hồ vv Và có DDD nếu bạn không thích (x) emacs

+0

Nếu tôi có thể thêm +100. Khi sử dụng bản làm lại ('brew install remake' để cài đặt), vấn đề mà tôi phải gỡ lỗi đơn giản là DISAPPEARED. Không biết vấn đề là gì, nhưng ai quan tâm? :) – ishahak

10

Từ trang người đàn ông về các tùy chọn dòng lệnh:

-n, --just-print, --dry-run, --recon 
Print the commands that would be executed, but do not execute them. 

-d Print debugging information in addition to normal processing. 
The debugging information says 
which files are being considered for remaking, 
which file-times are being compared and with what results, 
which files actually need to be remade, 
which implicit rules are considered and which are applied--- 
everything interesting about how make decides what to do. 

--debug[=FLAGS] Print debugging information in addition to normal processing. 
If the FLAGS are omitted, then the behaviour is the same as if -d was specified. 
FLAGS may be: 
'a' for all debugging output same as using -d, 
'b' for basic debugging, 
'v' for more verbose basic debugging, 
'i' for showing implicit rules, 
'j' for details on invocation of commands, and 
'm' for debugging while remaking makefiles. 
0

Có một dự án trình gỡ lỗi GNU tại http://gmd.sf.net trông khá hữu ích. Các tính năng chính được hỗ trợ bởi gmd là breakpointing, mà có thể hữu ích hơn bước. Để sử dụng điều này, bạn tải xuống gmd từ http://gmd.sf.net và gmsl từ http://gmsl.sf.net và thực hiện 'bao gồm gmd' trong tệp makefile của bạn.

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