Tôi có một mã nguồn rất lớn trong C++ (được viết bằng các mẫu chuẩn). Tôi cần phải hiểu được luồng điều khiển của nó. Đó là điểm nhập cảnh là main()
chức năng nhưng trong vòng main()
nó gọi rất nhiều chức năng (mà lần lượt gọi một chức năng khác) vì vậy nó đang trở nên rất khó khăn cho tôi theo dõi những gì đi đâu. Tôi đang sử dụng nhật thực để điều hướng giữa các tệp và theo dõi nhưng vẫn khó quản lý vì nó chứa khoảng 100 .c
và .h
tệp. Có công cụ nào có thể tạo phân cấp cuộc gọi bắt đầu từ chính() không. Mặc dù tôi có 100 tệp, tôi biết nó chỉ sử dụng khoảng 35 tệp. Tôi đang trên Linux. GCC có thể giúp tôi với điều này không?Công cụ tạo hệ thống phân cấp cuộc gọi của thư viện
5
A
Trả lời
6
Danh sách các công cụ bạn có thể sử dụng: http://en.wikipedia.org/wiki/Call_graph
Tôi thích Doxygen: http://www.stack.nl/~dimitri/doxygen/
Một ví dụ về đồ thị cuộc gọi doxygen từ http://www-scf.usc.edu/~peterchd/doxygen/:
séc doxygen, cần có sơ đồ cuộc gọi . – PiotrNycz
Các câu lệnh '# include' của bạn nên cung cấp một số thông tin. Và bạn có thể thử để lại một số tệp đối tượng ra khỏi tệp thực thi; nếu mối liên kết không phàn nàn, những tệp đó là không cần thiết. – Beta