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 + 4508644Super 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...
Posted by deee on Mon 26 Mar 2018 at 10:58 from 79.168.107.x
Posted by Justin on Mon 26 Mar 2018 at 12:32 from 108.21.108.x
Posted by deee on Mon 26 Mar 2018 at 12:57 from 79.168.107.x
Add comment: