如何调试没有错误消息的ctypes

How to debug ctypes without error message

本文关键字:有错误 消息 ctypes 何调试 调试      更新时间:2023-10-16

我有一个简单的python脚本,使用c/c++库与ctypes。我的c++库还包含一个main方法,所以我可以编译它而不使用-shared标志,它可以被执行并且运行没有问题。

然而,当我使用ctypes从python脚本运行相同的代码时,执行c++程序的一部分(我可以从cout调用中看出这一点)。然后是整个应用程序,包括python脚本,终止程序(我可以从缺失的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",并使打印到cout工作。