Hopefully the new code discussed in OP isnt quadratic.
> Symbol servers are good. If you are on Windows then make sure you are using symbol servers. If you are not on Windows – I’m very sorry (and by that I mean that it is a shame that debugging and profiling – especially of issues on other users’ machines – is so much harder for you).
It seems that the author believes that only Windows has good debugging symbol support, which isn't true at all. In fact, several Linux distributions provide debugging symbols for most of their packages, and from my own experience I know that in particular Arch Linux and Void Linux are quite easy to set up to use them. I'm not even getting started on the availability of source code.
Void Linux in particular is very convenient for debugging issues on different architectures, because its package build system inherently supports cross-compiling for multiple architectures from the same package definition with minimal extra configuration, including generating debugging symbols. Naturally these symbols are packaged separately from the binary packages that reference them, so there is no need to install binary packages for an incompatible architecture just to get at the debugging symbols.
A better rebuttal to "symbol servers make debugging on Windows more convenient, because they allow you to open a debug trace from someone else's computer and immediately have symbols available that match the versions installed on their system" would be "here's how to configure your debugger on Linux so it automatically downloads the correct symbols as well."
Edit: I guess the answer is DEBUGINFOD_URLS https://sourceware.org/elfutils/Debuginfod.html
Microsoft's symbol servers allow cross-OS-version symbols with ease. The easiest solution I've seen on Linux involves downloading a full copy of the foreign distro and hope the exact library versions on the server are still available in the repos.
The Void Linux tooling sounds interesting for sure, but by your description I think it doesn't solve the same problem?
Linux has made progress in this area, but I think that Windows is still better. Maybe I'm wrong (I haven't used Linux in a while) but I think when Linux developers say that they have excellent support for debug symbols this just means that they don't realize how good it is on Windows.
I can load a crash dump or ETW profiling trace that has come from a customer using any version of Windows and load it up on my machine and the debug symbols just appear. Windows 11? Windows 10? Windows 7? Some random patch level? It doesn't matter - they just show up. When I worked on Chrome I had that symbol server configured as well, so any combination of old Chrome version and Windows version would just work. It's really magical.
In addition, Chrome source code would automatically show up as I explored the crash dump. That's source indexing which is separate but related, and also magical.
If some Linux variants work this well, then that is great. Last time I tried I found there were many different steps and debug packages to install just to get all of the symbols for my local Linux install, and handling other Linux installs was more complicated.
This is all I do to make it work on Windows:
```set _NT_SYMBOL_PATH=srvc:\Symbolshttps://msdl.microsoft.com/download/symbols;SRV*c:\symbols*h...```
This might be one of these cases in which Windows had to become better. On Linux, you always could recompile everything yourself enabling debug symbols, but that's not an option on Windows.