【发布时间】:2025-11-23 05:55:02
【问题描述】:
我正在使用 Visual Studio 2017,并在虚幻引擎编码标准下进行编码,并且它会引发未处理的异常,并将无效参数传递给认为它们是致命的函数。我想不通,VS2017调试器完全没用,而且我对编码很陌生,有人能给我一些建议吗?编辑:我可以接近找到的唯一一件事是,它似乎是由下面函数中某处的无限循环引起的字符串超出范围引起的。
FBullCowCount FBullCowGame::SubmitGuess(FText Guess)
{
// increment the turn number
MyCurrentTry++;
// setup a return variable
FBullCowCount BullCowCount;
// loop through all letters in the guess
int32 HiddenWordLength = MyHiddenWord.length();
for (int32 MHWChar = 0; MHWChar < HiddenWordLength; MHWChar++) {
// compare letters against the hidden word
for (int32 GChar = 0; GChar < HiddenWordLength; GChar++) {
//if they match then
if (Guess[MHWChar] == MyHiddenWord[MHWChar])
{
//increment bulls if they're in the same place
if (MHWChar == GChar) {
BullCowCount.Bulls++;
}
else {
BullCowCount.Cows++;
}
}
} //increment cows if not
}
return BullCowCount;
}
【问题讨论】:
-
我们是否应该猜测有问题的调用是什么?设身处地为我们着想。想象一下,您从未见过您的整个代码库。想象一下,您只看到了这个。你能找出问题所在吗?
-
“提出建议”不是本网站的运作方式。您应该创建一个minimal reproducible example,让每个人都可以重现错误并验证他们的解决方案是否解决了问题。
-
idk,我只需要比我自己更多的大脑,这个代码块是相当独立的,据我所知,断点完全发生在这个函数中。我想我想知道的主要事情是任何人都可以看到我编写任何循环的方式有任何重大缺陷。
-
如果你愿意,我可以把我的整个代码放到 github 上
-
调试不是这样工作的。 VisualStudio 应该指出正在抛出的确切行和函数调用。它还应该破坏(冻结但不终止)您的程序,以便您可以实际查找导致函数抛出的变量的值。如果您在阅读该信息后仍无法找出问题所在,请编辑您的帖子以包含它们,以便我们尝试找出问题所在。
标签: c++ exception breakpoints