Tôi đang làm việc trên Ubuntu 11.04. Làm cách nào để tìm ra kích thước ngăn xếp cuộc gọi tối đa của một quy trình và kích thước của mỗi khung của ngăn xếp?Làm cách nào để tìm kích thước ngăn xếp tối đa?
Trả lời
Bạn có thể truy vấn quy trình tối đa và kích thước ngăn xếp bằng cách sử dụng getrlimit
. Khung ngăn xếp không có kích thước cố định; tùy thuộc vào số lượng dữ liệu cục bộ (tức là các biến cục bộ) mà mỗi khung hình cần.
Để thực hiện việc này trên dòng lệnh, bạn có thể sử dụng ulimit.
Nếu bạn muốn đọc các giá trị cho một quá trình chạy, tôi không biết về bất kỳ công cụ thực hiện điều này, nhưng nó đủ dễ dàng để truy vấn hệ thống tập tin/proc:
cat /proc/<pid>/limits
Bạn có thể sử dụng getrlimit
để xem kích thước ngăn xếp và setrlimit
để thay đổi kích thước.
Có ví dụ trong bài đăng Increase stack size in Linux with setrlimit.
Không phải là một lệnh trong ubuntu như getrlimit – HMS
Tìm kiếm nhanh trên Google sẽ hiển thị some information on this subject.
> ulimit -a # shows the current stack size
Tất nhiên, tìm kiếm nhanh trên google hiện phục vụ trang này. – gerardw
kích thước ngăn xếp tối đa bằng kilobyte:
ulimit -s
tôi nhận được một lệnh không tìm thấy lỗi. Tôi cần cài đặt gói nào cho lệnh này? – Bruce
Đó là cuộc gọi C API, không phải là công cụ dòng lệnh. –
Họ cần phải có một số kích thước bắt đầu phải không? Liệu trình biên dịch tính toán trước kích thước của khung stack (có tính đến tất cả các biến địa phương) và sau đó phân bổ khung? – Bruce