Python在解析linux的一些文件时死掉了

2024-06-16 13:11:29 发布

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

我正在使用clangpython绑定来自动解析源代码,但是当它解析一些linux文件时,进程会死掉,没有CPU消耗,没有错误异常,没有响应,甚至我不能使用Ctrl+C终止终端。我的代码如下:

index = Index.create()
tu = index.parse(file_path)
next_func(tu)

它与许多源代码存储库(如Libpng、OpenCV等)配合得很好。它如何在解析目录linux-master\drivers\gpu\drm\nouveau\nvkm\subdev\i2c下的文件(例如https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/anx9805.c)时失效。我一步一步地运行代码,发现错误发生在运行tu = index.parse(file_path)

环境:Windows10,libclang.dll(6.0)python2.7

我试过命令clang -cc1 -fsyntax-only -ast-dump anx9805.c 它报告说,一些头文件没有找到,它的ast结构如下:

In file included from \linux\linux-master\drivers\gpu\drm\nouveau\nvkm\subdev\i2c\anx9805.c:28:
In file included from \linux\linux-master\drivers\gpu\drm\nouveau\nvkm\subdev\i2c/bus.h:4: \linux\linux-master\drivers\gpu\drm\nouveau\nvkm\subdev\i2c/pad.h:4:10: fatal error: 'subdev/i2c.h' file not found
#include <subdev/i2c.h>
         ^~~~~~~~~~~~~~
TranslationUnitDecl 0x13de7f82728 <<invalid sloc>> <invalid sloc>
|-TypedefDecl 0x13de7f82ca0 <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
| `-BuiltinType 0x13de7f829c0 '__int128'
|-TypedefDecl 0x13de7f82d10 <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128'
| `-BuiltinType 0x13de7f829e0 'unsigned __int128'
...
...

但是,进程是可以结束的,我不知道python中是否发生了错误,终端中的进程为什么没有响应,我代码中的try...except...没有捕捉到错误,甚至我也不能终止进程。允许忽略这些错误文件。最重要的是,我不希望代码运行中断


Tags: mastergpu进程linux错误i2cfiledrivers