如何在没有错误消息的情况下调试 ctypes

How to debug ctypes without error message

我有一个简单的 python 脚本,它使用 c/c++ 库和 ctypes。我的 C++ 库还包含一个主要方法,所以我可以在没有 -shared 标志的情况下编译它,它可以被执行并且它 运行s 没有问题。

然而,当我 运行 使用 ctypes 来自 python 脚本的相同代码时,c++ 程序的一部分被执行(我可以从 cout 调用)。然后是整个应用程序,包括 python 脚本,termiantes(我可以从缺少的 coutprint 调用中看出这一点)。没有错误消息,没有段错误,没有 python 堆栈跟踪。

我的问题是:我该如何调试它?发生这种情况的可能原因是什么?

这是部分代码,但是,由于没有错误信息,我不知道哪个代码是相关的。

import ctypes

interface = ctypes.CDLL("apprunner.so")
interface.start()
print "complete"

.

#include "../../app/ShaderApp.cpp"
#include <iostream>
#include "TestApp.cpp"

TestApp* app = 0;

extern "C" void start() {
    app = new TestApp();
    cout << "Running from library" << endl;
    app->run();
}

int main( int argc, const char* argv[]) {
    cout << "Running from excecutable" << endl;
    start();
}

通常,您从一个小型模型库开始,该库仅允许您测试来自 python 的函数调用。准备就绪后(所有调试打印都正常),您可以继续进行。在您的示例中,注释掉 #include "testapp.cpp" 并让打印件正常工作。