【问题标题】:How to call a public function of a C++ object in lldb command line?如何在 lldb 命令行中调用 C++ 对象的公共函数?
【发布时间】:2013-02-23 21:05:57
【问题描述】:

我正在尝试测试 C++ 函数调用的结果。该函数是公共的,调试器位于对象是成员的调用中。这是类接口:

class NumerialDispersion {
    MeshSystem mesh;

    vector<double> b_k;
    vector<double> c_k;


public:
    void setupMeshSystem();
    void setUpAnalysis();
    void calculateK();
};

我需要测试我在 MeshSystem 中声明的函数。 MeshSystem类的接口如下:

class MeshSystem {

    Element mainMeshElement;


public:
    MeshSystem(Element element, double tStep);


    double get_b_k(uint index);

};

我需要使用不同的索引值在 lldb 中执行函数 get_b_k()。我正在使用 Xcode 4.6 用户 Mountain Lion。

lldb 是否支持这样的表达式?如果是的话,谁能帮帮我?

非常感谢。

【问题讨论】:

  • 你试过直接调用它吗?例如。 mesh.get_b_k(some_index)?
  • 我尝试使用 expr mesh.get_b_k(some_index)。但它没有用。我尝试使用此指针作为 this->mesh 访问对象。如果我写 expr this->mesh 它会显示所有的成员变量。但是尝试使用 expr this->mesh.get_b_k(i) 或 expr this->mesh->get_b_k(i) 不起作用。有没有执行类函数的具体命令?
  • 执行此操作时 lldb 会响应什么?

标签: c++ xcode debugging lldb


【解决方案1】:

任一类型

p mesh.get_b_k(1)

expr -- mesh.get_b_k(1)

请注意,该函数可能根本不存在于目标中,即未使用且其主体未编译。在这种情况下,以某种虚假的方式使用它,或使其可导出(使用 attribute ((visibility ("default"))) 进行注释)

【讨论】:

    猜你喜欢
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    相关资源
    最近更新 更多