It is amazing to me how many developers shoot themselves in the foot in the name of secrecy, image, embarrassments,
fear of piracy, or something else (I have no idea!).
For example, almost all VST plug-in developers I see will never put symbol names in their plug-ins. So when a plug-in
crashes, you get crash traces like this:
0 com.somedev.pluginnamethingy 0x00000001a4d351e3 0x1a4cb7000 + 516579
1 libc++abi.dylib 0x00007fff76d8c3bb __dynamic_cast + 272
2 com.somedev.pluginnamethingy 0x00000001a505d897 0x1a4cb7000 + 3827863
3 com.somedev.pluginnamethingy 0x00000001a5107d85 0x1a4cb7000 + 4525445
4 com.somedev.pluginnamethingy 0x00000001a5107d15 0x1a4cb7000 + 4525333
5 com.somedev.pluginnamethingy 0x00000001a54740ec 0x1a4cb7000 + 8114412
6 com.somedev.pluginnamethingy 0x00000001a5107d85 0x1a4cb7000 + 4525445
7 com.somedev.pluginnamethingy 0x00000001a5145407 0x1a4cb7000 + 4776967
8 com.somedev.pluginnamethingy 0x00000001a5107d15 0x1a4cb7000 + 4525333
9 com.somedev.pluginnamethingy 0x00000001a5273ac1 0x1a4cb7000 + 6015681
10 com.somedev.pluginnamethingy 0x00000001a5103be4 0x1a4cb7000 + 4508644
Super helpful to everybody involved, right?
In REAPER we have for a very long time, on macOS at least, included symbol names. So when there's a crash, we see:
30 com.apple.AppKit 0x00007fff4f2f2ee6 _NSTryRunModal + 100
31 com.apple.AppKit 0x00007fff4ec5dcf9 -[NSApplication runModalForWindow:] + 133
32 com.cockos.reaper 0x0000000100510cad SWELL_DialogBox(SWELL_DialogResourceIndex*, char const*,
33 com.cockos.reaper 0x000000010016583b __localizeDialog(void*, char const*, HWND__*,
34 com.cockos.reaper 0x0000000100149a02 LoadProjectFromContext(ReaProject*, ProjectStateContext*,
35 com.cockos.reaper 0x0000000100147fcc LoadProject(ReaProject*, char const*, int*, int) + 972
36 com.cockos.reaper 0x00000001000aef49 DoProjectLoad(char const*, bool, int) + 537
37 com.cockos.reaper 0x00000001000acc3d Main_openProject(char const*) + 509
38 com.cockos.reaper 0x0000000100070098 Main_OnCommandEx2(int, int, ReaProject*) + 9160
39 com.cockos.reaper 0x00000001000d3a6f Main_OnCommandEx(int, int, ReaProject*) + 31
40 com.cockos.reaper 0x000000010036198b KBD_OnMainActionEx(int, int, int, int, HWND__*,
Yes, our functions are named terribly. It's much worse than it looks, even, but at a quick glance we (or our troubleshooting user) can quickly see exactly what the hell is going on.
Can one do this on VC builds (without doing full line numbers, obviously)? I forget...
3 Comments