【发布时间】:2009-02-09 06:49:07
【问题描述】:
我正在开发一个多线程应用程序,这是死锁。
我正在使用 Visual C++ Express 2008 来跟踪程序。一旦发生死锁,我只是暂停程序并跟踪。我发现当死锁发生时,我的 C++ 扩展中会有两个名为 python 的线程。
他们都在python代码中使用了Queue,所以我猜死锁可能是由Queue引起的。但是,一旦扩展进入 python 代码,我只能从 VC++ 调试器中看到 asm 代码和二进制文件。
我想知道在我暂停程序后有什么方法可以转储python代码的调用堆栈吗?我怎么知道线程中有什么锁导致了死锁?
【问题讨论】:
-
Python 代码是从 C++ 程序调用的吗?
-
不,python程序导入了我写的一些c++扩展。
-
有趣的是,在python debugger documentation page上,没有
thread这个词的踪迹。 -
如果线程停留在某个位置,此代码会打印线程的堆栈跟踪:gist.github.com/niccokunzmann/6038331
标签: python multithreading debugging deadlock