【问题标题】:Why is the C++ debugger not stepping into the expected function?为什么 C++ 调试器没有进入预期的功能?
【发布时间】:2023-01-05 16:43:49
【问题描述】:
#include<iostream>
#include<string>
using namespace std;

void reverse(string s){
    if(s.length()==0){ //base case
        return;
    }

    string ros=s.substr(1);
    reverse(ros);
    cout<<s[0];
}

int main(){
    reverse("binod");
    
}

debugger_img_1

debugger_img_2

粉煤灰, 调试器应该进入 reverse() 函数。但它正在打开这些外部代码。

【问题讨论】:

  • 你能在目标函数的第一行打个断点然后一直运行到断点吗?
  • 它仍然进入这些选项卡,但是“先退出然后进入”是有效的。

标签: c++ debugging


【解决方案1】:

调试器正在进入 std::string(const char*) 构造函数。您的代码在调用 reverse 之前隐式调用它,因为您将 "binod"(实际上具有 const char* 类型)传递给期望 std::string 的函数。

这里没有任何问题,不是错误的函数,只是调用了一个你没有意识到的函数。只需走出去,然后再走进去。

附注:Visual Studio 的调试器有“Just My Code!”该功能启用后,意味着调试器只会进入您编写的代码。可以节省时间。

【讨论】:

  • 如何在 VS Code 中做到这一点? reference
猜你喜欢
  • 2020-12-15
  • 2023-01-11
  • 1970-01-01
  • 2014-02-24
  • 2016-01-10
  • 1970-01-01
  • 1970-01-01
  • 2019-01-30
  • 1970-01-01
相关资源
最近更新 更多