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

时间:2016-09-25 00:38:05

标签: python c++ ctypes

我有一个简单的python脚本,它使用带有ctypes的c / c ++库。我的c ++库还包含一个main方法,因此我可以在没有-shared标志的情况下编译它,它可以被驱动并且运行没有问题。

但是,当我使用ctypes从python脚本运行相同的代码时,c ++程序的一部分已经完成(我可以通过cout调用来判断)。然后是整个应用程序,包括python脚本,termiantes(我可以从缺少的coutprint调用中得知)。没有错误消息,没有segfault,没有python stacktrace。

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

以下是代码的一部分,但由于没有错误消息,我不知道哪些代码是相关的。

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();
}

1 个答案:

答案 0 :(得分:0)

通常,您从一个小型模型库开始,它只允许您测试来自python的函数调用。准备就绪后(所有调试打印都没问题),您可以继续。在你的例子中,注释掉#include“testapp.cpp”并获得打印到cout工作。