Próbuję debugować moduł rozszerzeń dla Pythona, który napisałem w C. I skompilowany przy użyciu następujących:Python rozszerzenie debugowanie
python setup.py build -g install --user
Potem debugowania z:
gdb python
...
b py_node_make
run test.py
To przerwy w py_node_make (jedna z funkcji I określonych), ale wtedy staram:
(gdb) print node
No symbol "node" in current context.
funkcja próbuję debugowania jest:
static Python_node_t* py_node_make(
node_t* node)
{
Python_node_t* pyNode;
pyNode = PyObject_New(Python_node_t, &t_node);
pyNode->node = node;
pyNode->borrowed = true;
return pyNode;
}
Uważam, że problem polegał na tym, że funkcja została całkowicie zoptymalizowana. Wiem, że flaga -g została ustawiona, ponieważ inne funkcje tu i tam i mnóstwo informacji, po prostu nie py_node_make. – CrazyCasta
Rozumiem. py_node_make() była małą funkcją statyczną i głównym celem do inlineing. Ustawienie punktu przerwania nadal działało, ale nazwa argumentu ** węzeł ** została utracona. – scottt