Users of WinDbg debugger accustomed to full thread stack traces will wonder whether a thread starts from main:
(gdb) where #0 0x000000010d3b0e90 in bar () at main.c:15 #1 0x000000010d3b0ea9 in foo () at main.c:20 #2 0x000000010d3b0ec4 in main (argc=1, argv=0x7fff6cfafbf8) at main.c:25
Of course, it doesn't and a stack trace is shown starting from main function by default. We can change this behavior by using the following command:
(gdb) set backtrace past-main
Now we see an additional frame:
(gdb) where #0 0x000000010d3b0e90 in bar () at main.c:15 #1 0x000000010d3b0ea9 in foo () at main.c:20 #2 0x000000010d3b0ec4 in main (argc=1, argv=0x7fff6cfafbf8) at main.c:25 #3 0×000000010d3b0e74 in start ()