cygwin_exception :: open_stackdumpfile:将堆栈跟踪转储到* .exe.stackdump

时间:2015-07-28 12:18:35

标签: c++ eclipse stack-trace eigen

我收到“cygwin_exception :: open_stackdumpfile:将堆栈跟踪转储到TestProject.exe.stackdump”错误。我的项目只不过是一个C ++ HalloWorld项目,它包含一个我设置并获取变量的附加类。我在尝试设置Eigen类型的矩阵变量的行中收到此错误。这是我的代码:

TestProject.cpp

#include <iostream>
#include "TestClass.hpp"

using namespace std;

int main() {
    cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    TestClass testClass;
    Eigen::MatrixXd XX = testClass.getVariable();
    cout << "X = " << XX;
    return 0;
}

TestClass.hpp:

#ifndef TESTCLASS_HPP_
#define TESTCLASS_HPP_
#include <Eigen/Core>
#include <Eigen/Eigenvalues>
#include <unsupported/Eigen/MatrixFunctions>
#include <Eigen/Geometry>


class TestClass {
private:
    Eigen::MatrixXd X;

public:
    TestClass();
    void setVariable(Eigen::MatrixXd);
    Eigen::MatrixXd getVariable();
    virtual ~TestClass();
};


#endif /* TESTCLASS_HPP_ */

最后是TestClass.cpp:

#include "TestClass.hpp"

using namespace std;

TestClass::TestClass() {
    X << 0, 1, 2;

}

TestClass::~TestClass() {
    // TODO Auto-generated destructor stub
}

void TestClass::setVariable(Eigen::MatrixXd x){
    X = x;
}
 /* namespace std */

Eigen::MatrixXd TestClass::getVariable(){
    return X;
}

我在控制台中获得的输出是:

!!!Hello World!!!
      0 [main] TestProject 8416 cygwin_exception::open_stackdumpfile: Dumping stack trace to TestProject.exe.stackdump

值得一提的是,当我将类变量X的类型(以及方法和头文件中的所有相关类型)更改为整数时,我不会收到此错误,代码将编译并运行。

我很感激任何帮助,因为我没有在网上找到有用的信息。

由于

1 个答案:

答案 0 :(得分:3)

您正在使用动态大小的Matrix X,并尝试使用逗号初始化它而不先设置其大小。这将引发异常:

正如here所说:

  

Eigen提供逗号初始化器语法,允许用户使用   轻松设置矩阵,向量或数组的所有系数。只是   列出系数,从左上角开始并从中移动   从左到右,从上到下。 对象的大小   需要事先指定

here

  

系数必须按行主要顺序提供   匹配矩阵的大小。否则会引发断言。

首先调整矩阵的大小:

TestClass::TestClass() {
    X.resize (1,3); 
    X << 0, 1, 2;
}