Tôi thực sự mặc dù tôi muốn tìm một câu trả lời trực tuyến, nhưng tôi không thể. Có sự khác biệt nào không? Mọi người nói rằng một 'backtrace' được tạo ra khi một cái gì đó ném một ngoại lệ, trong khi một dấu vết stack là một danh sách các cuộc gọi phương thức từ điểm khi ứng dụng được bắt đầu đến điểm mà trường hợp ngoại lệ đã được ném. Nếu chúng ta cho rằng một dấu vết ngăn xếp là một mảng, thì phần tử cuối cùng sẽ là phương thức mà trường hợp ngoại lệ được ném ra. Nó sẽ là trường hợp ngược lại cho một dấu vết ngược lại? Trong một ngôn ngữ lập trình như Ruby, ví dụ, nếu chúng ta có:Sự khác biệt giữa stack-trace và back-trace là gì?
begin
raise 1
rescue
p $!.backtrace ; p caller(0) #=> displays the back-trace, then the stack-trace
end
Họ sẽ ra 2 mảng khác nhau, điều này gợi ý cho tôi có điều gì đó hoàn toàn khác nhau về họ.
Linux hầu như không tồn tại khi Ruby được tạo, tôi nghi ngờ rằng bất kỳ thuật ngữ nào trong Ruby đều bắt nguồn từ đó. Ruby đã được tạo ra vào tháng 2 năm 1993, Linux vào mùa hè năm 1991. SLS, bản phân phối Linux đầu tiên chỉ mới 5 tháng tuổi và bị lỗi khi địa ngục bắt đầu. –
@ JörgWMittag Suy đoán về phía tôi và bạn có lẽ đúng, mặc dù điều đó phụ thuộc vào thời điểm Exception.backtrace được thêm vào ngay từ đầu. Nó có nhiều khả năng là một thuật ngữ phổ biến vào thời điểm đó vì các công cụ GNU có xu hướng sử dụng thuật ngữ đó (ví dụ GDB, và công cụ backtrace, tồn tại trên Unix trước). Như tôi đã nói - ở đây một cách tình cờ! Tôi ngạc nhiên khi Ruby thực sự là cũ. –
Được hình thành vào ngày 24 tháng 2 năm 1993, được xuất bản vào năm 1995, 1.0 vào dịp Giáng sinh năm 1996. –