Есть ли способ вызвать GDB и управлять им, получить к нему доступ из программы c ++?
Да. Выполните его с перенаправленным вводом / выводом и просто управляйте им через каналы.
EDIT:
Это зависит от того, где вы хотите это сделать. В Windows вы можете использовать следующее: http://msdn.microsoft.com/en-us/library/ms682499%28v=vs.85%29.aspx
На * nix, шаги, описанные в Linux Pipes как ввод и вывод ТАК ответ должен сделать это.