Это та же самая общая идея, что и GDB. pstack использует ptrace, который позволяет внешнему процессу подключиться к известному pid и распечатать информацию (стек известен по текущим регистрам).
Если вы хотите точно знать, как это делается, поищите информацию о ptrace
.
Кроме того, процессы на самом деле не запускаются "внутри GDB". Вы можете без проблем подключить GDB к запущенному процессу, запустив gdb executable pid
.