Exploring the Stack: An Introduction to Viewing Stacks on Linux(linux查看栈)
Stacks in computing are a data structure that allows information to be stored and retrieved from a given set in a very particular order. They are often used in computing applications to store elements that will be “popped” off in a particular logical order. While stacks are commonly used for data storage, understanding how to view and use any given stack is vital for optimizing and troubleshooting any program. To better illustrate how to view and explore a stack on Linux, we will take a look at how to view the stack in detail.
Often times, it is necessary to view the stack of a running executable in order to get a better understanding of how the program is working. On Linux, this can be done with the pstack command. This command will allow the user to view the stack trace of a running executable. By running “pstack ” , where the PID is the process ID of the running executable, the user can see the stack trace of the given process. The output will display the functions that the process is currently running, as well as their memory address and their arguments. For example, if we run “pstack 591”:
~# pstack 591
_start () at 0x559974f400
main () at 0x559331d5af
foo () at 0x55a1dd5652
bar () at 0x55ab1da5fa
baz () at 0x55acde2369
Each of these lines in the output indicates a function that has been called, as well as the memory address of that function and its arguments. The arguments are in parentheses following the function name and the memory address is the number preceding the function name. In this example, the function “foo” has been called at memory address “0x55a1dd5652”.
With this information, we can gain a better understanding of how the program is working. For instance, we can see that the program starts at the “_start” function and then progresses down the stack as it runs. We can also look up the memory address of a given function to see detailed information about how it works. Additionally, this command can tell us the point of failure in a program if it crashes.
With pstack, the user can explore and understand the stack of a running executable in Linux. This can help us to diagnose and optimize any given program, as well as help us to better understand how Linux works.