Doxygen QGArray::at:绝对索引7645637866超出范围

Doxygen QGArray::at:绝对索引7645637866超出范围,doxygen,Doxygen,我正在使用doxygen解析Linux内核()。运行超过20小时后,在生成调用图时,它会报告错误:QGArray::at:Absolute index xxxxxxxxx超出范围。我分析了源代码,怀疑它可能是由doxygen master/qtools/qgarray.h:54 struct array_data : public QShared { // shared array array_data() { data=0; len=0; } char *data;

我正在使用doxygen解析Linux内核()。运行超过20小时后,在生成调用图时,它会报告错误:
QGArray::at:Absolute index xxxxxxxxx超出范围
。我分析了源代码,怀疑它可能是由
doxygen master/qtools/qgarray.h:54

struct array_data : public QShared {    // shared array
    array_data()    { data=0; len=0; }
    char *data;             // actual array data
    uint  len;
    };
我尝试为
len
使用
long
类型,重建并重新安装Doxygen,但是解析Linux还需要20个小时来检查它


我想知道如何完美地修复错误?

剪切和粘贴警告消息总是很好的,您显示的消息并不存在,即使存在微小的差异(大写和小写),拥有准确的消息也很重要!在xxxxxxxxx上有值也很有用,因为我怀疑给出了一个值,这可能会给出一个线索。我不认为将
uint
更改为
long
会有帮助。当然,如果
uint
long
,这取决于大小(字节)。另外,我不确定将
long
值用作索引时会发生什么情况,并注意
msg_index
方法中需要的更改。当然,在你的情况下,投资20小时是值得的。此外,了解此消息是出现一次还是多次,以及消息在控制台的输出中出现的位置将非常有用。doxygen配置文件中的任何特殊设置(请参见
doxygen-x
)?也会对您用于doxygen的编译标记感兴趣,因为指定的值不适合32位无符号整数。我尝试将类型更改为long,并在Ubuntu 16.04上使用命令:
cmake-G“Unix Makefiles.”,make,make install
。它运行它来解析Linux,然而,我停止了构建成员列表,没有退出,没有错误报告,没有更多的进展。它就停在那里。你说的“它就停在那里”是什么意思?你的意思是过程没有给出任何消息就终止了,还是它进入了一个无休止的循环?你能在gdb下运行doxygen吗?当它停止时,发出“where”命令?