C++ 在注释行上调用断点
这让我完全不知所措。 这看起来像是VS中的一个bug,但我确信这只是我做错了什么 在调试代码时,我特别注意到一个函数触发了一个断点——从未被调用过。我从层次结构中通过搜索所有引用来验证没有任何东西在调用它 然后我注释掉了代码;而且它仍在到达断点(是的,在注释行上) 然后我移动了注释过的代码,发现函数不再被调用,但在同一行周围另一个注释过的字符串被调用了 事实证明,此.cpp上第31行和第43行之间的任何一行(即使在函数之间或注释掉的函数之间)都将触发断点,即使没有断点 例如:C++ 在注释行上调用断点,c++,visual-studio,visual-studio-2013,C++,Visual Studio,Visual Studio 2013,这让我完全不知所措。 这看起来像是VS中的一个bug,但我确信这只是我做错了什么 在调试代码时,我特别注意到一个函数触发了一个断点——从未被调用过。我从层次结构中通过搜索所有引用来验证没有任何东西在调用它 然后我注释掉了代码;而且它仍在到达断点(是的,在注释行上) 然后我移动了注释过的代码,发现函数不再被调用,但在同一行周围另一个注释过的字符串被调用了 事实证明,此.cpp上第31行和第43行之间的任何一行(即使在函数之间或注释掉的函数之间)都将触发断点,即使没有断点 例如: void Name
void Namespace::Foo()
{
... code ...
}
<<<<< THIS TRIGGERS A BREAKPOINT!>>>>>
void Namespace::Bar()
{
... code ...
}
这是第一行(31)。这介于两个不同的功能之间:
void ErrHandling::vDX_WRITE(const TCHAR* text)
{
_TCHAR str[MAX_PATH] = _T("");
// Start with date/time
LPTSTR string = mFormatTimeNow();
_tcscat_s(str, 100, string);
_tcscat_s(str, _MAX_PATH, text); // Write the specific string
mWriteToFile(str); // Dispatch to file
}
<<<<<<<<<<<<<<<<<<<LINE 31>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
const TCHAR* ErrHandling::stringFromError(TCHAR* szErr, long nSize, long nErr)
{
_ASSERTE(szErr);
*szErr = 0;
DWORD cb = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, nErr, 0, szErr, nSize, 0);
TCHAR szUnk[] = _T("<unknown>");
if (!cb && nSize >= lengthof(szUnk)) lstrcpy(szErr, szUnk);
return szErr;
}
void ErrHandling::vDX_WRITE(const TCHAR*text)
{
_TCHAR str[MAX_PATH]=\u T(“”);
//从日期/时间开始
LPTSTR string=mFormatTimeNow();
_tcscat_s(str,100,string);
_tcscat_s(str,_MAX_PATH,text);//写入特定字符串
mWriteFile(str);//分派到文件
}
>>>>>>>>>>
常量TCHAR*ErrHandling::stringFromError(TCHAR*szErr、long nSize、long nErr)
{
_阿塞尔特(szErr);
*szErr=0;
DWORD cb=格式化消息(格式化消息来自格式化系统,0,nErr,0,szErr,nSize,0);
TCHAR szUnk[]=_T(“”);
如果(!cb&&nSize>=lengthof(szUnk))lstrcpy(szErr,szUnk);
返回szErr;
}
我看到过类似的问题,结果证明是由单个源文件中使用的不同行尾引起的-一些行尾是unix样式(LF),一些是windows(CRLF)。我不确定是否可以在visual studio编辑器中看到行尾,但有“文件->高级保存”选项可以在保存时预测转换它们。可能有很多不同的内容,但由于您没有粘贴实际代码,所以很难说。@cdhowie我不确定要粘贴什么代码,不管我放了什么代码,它都会发生。好像文件本身被破坏了调用堆栈是什么样子的?您正在尝试调试优化的生成吗?您是否尝试过删除所有生成工件并重新生成?@RetiredInja优化已禁用。清洁。重建。还在发生,宾果!多谢。必须从自定义中启用文件>高级保存选项菜单。不正确的格式一定是从其他页面或我的评论块中复制过来的。
void ErrHandling::vDX_WRITE(const TCHAR* text)
{
_TCHAR str[MAX_PATH] = _T("");
// Start with date/time
LPTSTR string = mFormatTimeNow();
_tcscat_s(str, 100, string);
_tcscat_s(str, _MAX_PATH, text); // Write the specific string
mWriteToFile(str); // Dispatch to file
}
<<<<<<<<<<<<<<<<<<<LINE 31>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
const TCHAR* ErrHandling::stringFromError(TCHAR* szErr, long nSize, long nErr)
{
_ASSERTE(szErr);
*szErr = 0;
DWORD cb = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, nErr, 0, szErr, nSize, 0);
TCHAR szUnk[] = _T("<unknown>");
if (!cb && nSize >= lengthof(szUnk)) lstrcpy(szErr, szUnk);
return szErr;
}