如何知道在调试时执行了哪个语句

时间:2020-05-12 15:04:46

标签: c++ debugging

在我的代码中,有时可以在一行中进行多个函数调用。我不知道哪个函数正在运行。 例如-

int foo(){
    if(m==0||n==0) return 0;
    return std::max(foo(a,b,m-1,n),foo(a,b,m,n-1));
}

在调试时,了解基于所有参数调用哪个函数变得很笨拙,有时甚至不起作用。调试时是否可以查看一行中的进程?我使用Codelite IDE。

2 个答案:

答案 0 :(得分:3)

当您在调试代码时遇到困难时,通常意味着您在一行中做了太多事情。这意味着您应该将一个复杂的语句拆分为多个语句。您的情况是这样的:

int foo(){
    if(m==0||n==0) return 0;
    auto a = foo(a,b,m-1,n);
    auto b = foo(a,b,m,n-1);
    return std::max(a, b);
}

答案 1 :(得分:1)

当前答案的替代方法可能是:

  • 进入语句。如果内联foo个电话,则不太可能
  • 调试反汇编

这些替代方法可能不起作用,但是如果可行,它们允许调试未更改的代码。