What is __unwind$ in a linker map file

2019-07-17 06:03发布

问题:

For VS2008 (C++) generated linker map files, what does the symbol "__unwind$" mean? I have a good chunk of them in the linker map file for my app.

I have a log which says a crash happens at a particular offset say 'x'. When I look at the linker map for this offset, I find this __unwind$41357 corresponding to the offset.

Also generally is there any reference to understand the file format of linker map files?

回答1:

"Unwinding" is happens with a stack when an exception is thrown. The __ prefix indicates a compiler-generated symbol. So, based on the description, you get a crash between a throw and a catch. My assumption is that the destructors called are called from the __unwind$ functions. An inlined destructor wouldn't have its own stackframe, so it would show up in the calling __unwind$ function.



回答2:

Only a guess, but I would say it is part of the code that handles stack unwinding when an exception is thrown.