$ ../gdb/gdb -v GNU gdb (GDB) 7.2.50.20101104-cvs This GDB was configured as "x86_64-apple-darwin10". $ uname -a Darwin aman-guptas-imac.local 10.4.0 Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010; root:xnu-1504.7.4~1/RELEASE_I386 i386 Build a simple test case: $ echo "int main() { while(42) sleep(1); }" > main.c $ gcc -o main main.c $ ./main & [1] 67119 $ export PID=$! Attach to running process (no debug info): $ ../gdb/gdb -ex "attach $PID" -ex "where" -ex "detach" -ex "quit" #0 0x00007fff85d18eb6 in ?? () #1 0x00007fff85d18d45 in ?? () #2 0x2c3e4603000c5877 in ?? () #3 0x00ffffffffffffff in ?? () Run the process inside gdb instead (works): $ ../gdb/gdb ./main -ex 'run' -ex 'where' -ex 'quit' #0 0x00007fff85d18eb6 in __semwait_signal () from /usr/lib/libSystem.B.dylib #1 0x00007fff85d18d45 in nanosleep () from /usr/lib/libSystem.B.dylib #2 0x00007fff85d65b14 in sleep () from /usr/lib/libSystem.B.dylib #3 0x0000000100000f2b in main ()
I also experience this on macOS 10.13.5. Debug info is read -- if I hack in some types and global variables, gdb can print them correctly. However, stack traces all print "??". The needed info must be somewhere, because lldb can get the stack trace correctly.