繁体   English   中英

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

[英]how to know which statement got executed while debugging

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

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

在调试时,根据所有参数了解调用了哪个 function 变得笨拙,有时甚至不起作用。 是否有任何选项可以在调试时查看一行内的进程。 我使用codelite IDE。

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

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);
}

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

  • 步入声明。 如果foo调用是内联的,则不太可能工作
  • 调试反汇编

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM