有时,我会遇到一个混乱的构建中断,我偶然输入了发生在某个时间的源代码,例如我上次尝试编译的最后一个小时。
例如,在位于api
的名为C:\api
的项目中,产生这些错误,
或以文本形式
Error C2672 'std::invoke': no matching overloaded function found api c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.16.27023\include\thr\xthread 238 1 Error C2893 Failed to specialize function template 'unknown-type std::invoke(_Callable &&,_Types &&...) noexcept(<expr>)' api c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.16.27023\include\thr\xthread 237 1
xthread
告诉我们它在哪里中断,但不告诉我们main.cpp
中哪一行引起错误。
这很简单,可以通过做一些注释(例如注释掉代码)直到停止中断以定位问题线来解决错误。但是,如果自上次编译以来一直做很多事情,即使简单也可能很耗时。
我想知道是否有办法获取main.cpp
中的哪一行(或者碰巧是您的任何文件)导致编译中断被您源代码之外的另一个文件报告。 / p>
现在,我知道一个事实,即由于反复试验,它在101
的第133
行和main.cpp
处中断,但是即使我更改了Visual Studio的控制台输出对于Diagnostic
的详细程度,在功能所在的任何地方都没有提及101
。使用该功能的133
在错误上方显示了几行,但是我不能认为在构建中断时非错误消息是1:1,尤其是因为在此之后处理了其他行行和生成错误触发之前。但是为了争辩,这是该行:
1> c:\api\main.cpp(133): note: see reference to function template instantiation 'std::thread::thread<winrt::Windows::Foundation::IAsyncOperation<bool>(__cdecl Consuming_Class::* )(unsigned __int64,API),unsigned __int64&,const API&,void>(_Fn &&,unsigned __int64 &,const API &)' being compiled
如果您必须遍历构建日志以寻找类似错误上方的提示,那么如果可以假设(我不是)那不是红色,那至少有帮助-鲱鱼。但是,如果这是一条红鲱鱼,那么我们将回到试错法。
Visual Studio中是否有一种方法可以自动 从您的源中获取导致问题的实际行,而不是尝试进行构建时从外部源返回的报告?
如果我关于不能安全地假设上面的行是故障行的假设在100%的时间内被证明是错误的,那么是否有类似插件的东西可以使Visual Studio能够更轻松/更快地完成此过程? t?