То, что вы пытаетесь сделать, не будет работать: вы загружаете общий объект в процесс GDB (через модуль Python ctypes
) и пытаетесь вызвать в нем функцию, используя указатель, полученный из GDB. Этот указатель действителен только в контексте подчиненного процесса, управляемого GDB. Сама GDB имеет совершенно другое адресное пространство, и указатель root
в этом контексте не имеет смысла.
Вам нужно либо реализовать печать на Python, используя GDB API для адресации всех значений, либо загрузить все данные с помощью GDB API, создать из них значения ctypes
и передать корень этой новой структуры данных вашему общий объект.
С другой стороны, если общий объект уже загружен в отлаживаемый процесс, вам следует вызвать функцию напрямую, используя GDB, и не использовать модуль ctypes
.