我使用GDB调试了Python和C的组合程序。当我的程序出现段错误时,GDB给我一个错误。
81 ../sysdeps/unix/syscall-template.S: No such file or directory.
这是更多有关引用信息的行。
0 0x00007ffff6f2b6d7 in kill () at ../sysdeps/unix/syscall-template.S:81
1 0x000000000042a241 in posix_kill.64590 (self=<optimized out>, args=<optimized out>) at ../Modules/posixmodule.c:4306
2 0x000000000050e78c in call_function (oparg=<optimized out>, pp_stack=0x7fffffffd7b0) at ../Python/ceval.c:4020
3 PyEval_EvalFrameEx (f=f@entry=Frame 0x7ffff5784608, for file /usr/local/lib/python2.7/dist-packages/django/utils/autoreload.py, line 121, in python_reloader (main_func=<instancemethod at remote 0x7ffff69a3a00>, args=(), kwargs={'use_static_handler': True, 'settings': None, 'pythonpath': None, 'verbosity': '1', 'traceback': None, 'use_ipv6': False, 'use_threading': True, 'use_reloader': True, 'insecure_serving': False}, exit_code=-11),
throwflag=throwflag@entry=0) at ../Python/ceval.c:2666
这是GDB还是我的程序的错误?在引用信息中找不到我程序的任何类。
谢谢 !
最佳答案
如果您的程序将无效的参数传递给C库函数,则它可能会在C库中崩溃。而且,如果您没有安装C库的源代码,那么您将从gdb中获得类似这样的消息。但是,这并不意味着什么都错了...通常缺少某个程序使用的一个或多个库的debuginfo和/或源代码。通常,解决方案是“上升”几个堆栈帧,看看真正的问题是什么。您很少会遇到库错误。