从C扩展调用Python函数时返回NULL

2024-09-29 20:32:54 发布

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

我使用2.7教程中建议的方法从C扩展调用Python模块中的函数。以下是我在C扩展中的代码:

    result = PyObject_CallObject(pFailureFormatFn, failureObj);
    if (result)
    {   // We got a good result from the function
        if (PyArg_ParseTuple(result, "OO", &resultDict, &resultString))
        {   // Decode success
            < snip >

            Py_DECREF(resultDict);
            Py_DECREF(resultString);
        }

        Py_DECREF(result);
    }
    else
    {   // Bad result from the function
        logEvent("The call to pFailureFormatFn returned a NULL result");
        PyErr_Clear();
    }

我发现这个调用对于许多调用都返回了很好的结果,然后它开始对所有调用返回NULL,直到程序退出。在Python域中被调用的函数(称为funcA)调用另一个递归调用自身的函数(称为funcB)。我已经确定问题发生在funcB中

我的问题是如何找出funcB中的问题是什么?我用gdb来运行这个程序,里面没有什么不好的事情发生。也就是说,返回空结果并继续执行。我想找出是什么导致了空返回(我能看到Python堆栈跟踪吗?)


Tags: the函数frompy程序iffunction教程

热门问题