首页 > 解决方案 > Visual Studio:在消毒剂异常后继续

问题描述

我认为 AddressSanitizer 是 Visual Studio 的一个很好的补充,但它会导致问题,让我谈谈我的情况。例如,我实现了我的自定义 strlen() 函数,如下所示:

size_t my_strlen(const char *my_string) 
{
    int n = 0;
    if (my_string == NULL) return 0;
    while (my_string[n] != 0) n++;
    return n;
}

此函数运行良好,直到在启用 AddressSanitizer 的情况下构建程序,这将在 Visual Studio 调试器下运行程序时导致异常,因为该函数尝试读取参数“my_string”的 1 个字节,到目前为止,非常好,但是我怎么能忽略这个异常并继续正常执行程序???

Visual Studio 当前的行为:如果我在异常对话框中单击“继续”:它会再次中断,然后再次异常退出。

我想要什么:单击“继续”,Visual Studio 知道我告诉它“我知道这个异常,但我稍后会解决它,现在,忽略它并继续前进”。我知道,我们可以通过使用 Menu -> Debug -> Windows -> Exceptions Settings 在 VS 调试器中禁用特定类型的异常处理,但在我的情况下,我只想在遇到 1 个异常时忽略它,而不是针对特定类型。

标签: visual-studiovisual-c++address-sanitizer

解决方案


推荐阅读