我正在查看使用 GDB 的实时 python 进程并看到以下帧:
...
#5 call_function (oparg=<optimized out>, pp_stack=0x7fffb1b2ffa0) at Python/ceval.c:4084
#6 PyEval_EvalFrameEx (f=f@entry=0x1a03850, throwflag=throwflag@entry=0) at Python/ceval.c:2679
...
我很困惑call_function
从哪里来。它似乎不是 python 可执行文件或二进制文件中的符号:
~ ᐅ objdump -x /usr/lib/libpython3.3m.so.1.0 | grep call_function
000000000005f0e0 l F .text 0000000000000094 call_function_tail
如果它不是一个已知的符号,GDB 是如何知道它的……它到底是什么(当然除了它是一个正常的函数)?