From: Royce Mitchell III
It's my understanding that using addr2line against the nostrip file can be off sometimes, because of subtle differences between the two files.
I think this problem is solved now too. It was caused by the two links we used to do, one to get file.nostrip.ext and then another one to get file.ext. Especially when static libs were involved the second link might produce a slightly different binary than the first.
The second link is gone now. The code and data is copied unchanged from file.nostrip.ext to file.ext.
Also, there will be times where there are no nostrip files, and we may have to figure out what's going on from the files the user is using.
If symbolic info was present in file.nostrip.ext (i.e. it was compiled with -g, which at present implies DBG := 1), then it will also be present in file.ext. So, the backtrace on e.g. BSODs should print the function name/source file/source line in addition to the address. Which means we won't have to use addr2line very often. If there was no symbolic info in file.nostrip.ext, addr2line wouldn't be of help anyway.
But as I said, creating a util like addr2line for the final file.ext is a piece of cake, it's just stringing together some calls to the rossym lib. I'll create something this week.
Which brings me to my last point: I'd like to enable -g (creation of symbolic info by the toolchain) for all builds, both DBG := 0 and DBG := 1. The only downside I see is it will take more diskspace to build ReactOS (currently 725 MB without symbolic info, 2477 MB with) and the final iso will be slightly larger (13 MB instead of 10MB). Personally I think this is outweighed by the possibility to have meaningful backtraces. Any objections?
Gé van Geldorp.