性能分析"invalid arc tag" (0x00000000)
profiling "invalid arc tag" (0x00000000)
在启用代码覆盖的情况下执行程序时出现以下错误:
profiling "invalid arc tag" (0x00000000)
删除*。gnca文件解决了这个问题,但我想知道是否有一个技巧来避免它的生成。
下面是一个重现问题的Qt项目示例:
// example.pro
QT += core
QT -= gui
TARGET = example
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
QMAKE_CXXFLAGS += -g -O0 -fprofile-arcs -ftest-coverage
QMAKE_LFLAGS += -g -O0 -fprofile-arcs -ftest-coverage
SOURCES += main.cpp
MyClass.cpp
HEADERS +=
MyClass.h
main.cpp文件
// main.cpp
int main(int argc, char *argv[])
{
return 0;
}
我的对象头:
// myclass.h
#ifndef MYCLASS_H
#define MYCLASS_H
#include <QObject>
class MyClass : public QObject
{
Q_OBJECT
public slots:
void slot1();
}
#endif // MYCLASS_H
及其实现:
// myclass.cpp
#include "myclass.h"
void MyClass::test1()
{
}
创建项目并编译它,然后在MyClass中添加另一个插槽(例如:void test2())。
然后在执行时触发警告。
我在MacOSX 10.9下使用Qt 5.2.1
引自这篇文章(几十个"profiling:invalid arc tag"当运行代码覆盖在Xcode 5)
这很可能是构建工具未能将当前结果合并到现有的.gcda覆盖文件中的结果。正如Dave Meehan在这里指出的那样,有一种蛮力的方法可以通过清理产品构建文件夹来处理这个问题,但是一种不那么硬的方法是从生成它们的目标中删除.gcda文件(对我来说,只是测试目标),作为构建过程的一部分。Dave包含了一个示例脚本,作为构建阶段包含——或者,在项目根目录下手工包含:
find . -name "*.gcda" -print0 | xargs -0 rm
或者更短一点
find . -name "*.gcda" -delete
相关文章:
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- 了解 ELF 可执行SHT_NOTE部分".note.ABI-tag"
- C++ 中的"template <typename From, typename Tag> struct Alias;"是什么?
- OPENCV.3.0错误:0xc0000005:访问违规读取位置0x00000000
- 在为矩阵分配值时访问冲突写入位置0x00000000
- 访问违规写作位置0x00000000在阅读/写入向量时
- OpenGL:glDrawArrays()引发异常(nvoglv32.dll)读取位置0x00000000时发生访问冲突
- C++ 错误 - <unnamed-tag>不允许匿名联合的成员使用 cass 内初始值设定项
- MSBUILD -TAG PropertyGroup具有属性标签,但没有记录
- NVIDIA 在 <work.exe>0xC0000005 中0x002a2da2未处理的异常:访问违规读取位置0x00000000
- 访问冲突写入位置0x00000000.C++/SFML游戏
- 0xC0000005:访问违规读取位置0x00000000
- IXAudio2 - 0xC0000005:访问冲突写入位置0x00000000
- 0xC0000005:访问冲突读取位置0x00000000哈希函数
- 如何使用 vim 中的 :tag 命令在 .hpp 和相应的.cpp之间切换
- <tag> 使用 libxml2 从 XML 中获取C++中的值
- 有没有办法修改样式表,以便它将带有空标记的 XML 文档转换为 <tag />?
- 引擎.exe 0x00000000时未处理的异常: 0xC0000005:访问冲突
- 填充数组(写入位置0x00000000的访问冲突)
- 性能分析"invalid arc tag" (0x00000000)