如何在virtualenv中调试pyside分段错误?

2024-10-05 10:47:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用pyside构建一个Qt应用程序,我有随机分段错误。我安装了faulthandler,如果未完成,调用堆栈将清除:

  File "/home/lionel/Libs/python/ProcessGraph/process_graph/qtgraph.py", line 247 in itemChange
  File "/home/lionel/Libs/python/ProcessGraph/process_graph/qtgraph.py", line 268 in mousePressEvent
  File "/home/lionel/Libs/python/ProcessGraph/process_graph/qtgraph.py", line 87 in mousePressEvent
  File "main.py", line 219 in main
  File "main.py", line 223 in <module>

崩溃总是存在的(在mousePressEvent中),但除了启动gdb,我看不出我能做什么。在

我已经安装了pythonggdb并尝试启动:gdb -ex r --args python-dbg main.py,但它没有运行。所以我有点卡住了。这里是堆栈:

^{pr2}$

Tags: inpyhome堆栈mainlineprocesslibs
1条回答
网友
1楼 · 发布于 2024-10-05 10:47:47

有一个技巧,你必须启动与你的virtualenv相对应的系统Python解释器。在

此外,还必须确保使用的是Python的调试构建。在

下面是我如何在Ubuntu上使用python特性获得gdb的方法:

# must use debug build of Python
sudo apt-get install gdb python2.7-dbg

# newest kernels disallow tracing/debugging by default (why on earth?)    
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

# create virtualenv with debug Python build
virtualenv -p /usr/bin/python2.7-dbg ~/labarret

# start virtualenv    
. ~/labarret/bin/activate

# pip install your-libs-and-deps

# now start **system** interpreter that corresponds to virtualenv
# make sure virtualenv libs/modules are loaded via environment
PYTHONHOME=~/labarret/ gdb  args /usr/bin/python2.7-dbg your-code.py

相关问题 更多 >

    热门问题