为什么在 VS Code 中 C++ 调试器会进入外部代码?

4
#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");
    
}

调试器图片1

调试器图片2

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


1
你能在目标函数的第一行设置一个断点并运行直到它中断吗? - NonStatic
它仍然进入这些选项卡,但“先退出再进入”可以解决问题。 - ph0en1x
1个回答

6
调试器正在进入std::string(const char*)构造函数。 在调用reverse之前,您的代码会在隐式调用此函数,因为您将"binod"(实际上具有类型const char*)传递给期望std::string的函数。
这里没有问题,不是错误的函数,只是一个您没有意识到正在被调用的函数。 只需退出再重新进入即可。
顺便说一句:Visual Studio的调试器具有“仅我的代码!”功能,启用后,调试器仅进入您编写的代码。 可以节省时间。

如何在VS Code中实现这个功能?参考链接 - ph0en1x

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接