If we put those aside, then the simplest example is probably when someone else's code crashes due to your input (though the bug may be theirs), and you don't have their source code. I've spent a great deal of quality time tracking down bugs in vendor libraries for which I had no source, and then working around them.
There are a ton of other possibilities, though. For instance, ordering issues related to thread-safety, out-of-order execution, and synchronization points/barriers.
Or, hell, just being able to read a failure quickly, whether or not you have debug symbols handy. Contrived example:
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x0000000000000000
0x0000000100000f25 in main ()
(gdb) disassemble
Dump of assembler code for function main:
...
0x0000000100000f25 <main+21>: movb $0xff,(%rax)
...
End of assembler dump.
(gdb) info reg rax
rax 0x0 0