在注释行上调用了断点
Breakpoint called on commented line
这让我完全迷失了方向。这似乎是VS中的一个bug,但我确信这只是我做错了什么。
在调试代码时,我注意到有一个函数特别触发了一个断点——从未被调用过。我从层次结构和通过搜索所有引用来验证,没有任何东西在调用它
然后我注释掉了代码;并且它仍然处于断点(是的,在注释行)。
然后我移动了带注释的代码,发现函数不再被调用,但同一行周围的另一个带注释的字符串被调用了。
事实证明,这个.cpp上第31行和第43行之间的任何一行——即使是在函数之间或注释掉了——都会触发一个断点,即使什么都没有。
例如:
void Namespace::Foo()
{
... code ...
}
<<<<< THIS TRIGGERS A BREAKPOINT!>>>>>
void Namespace::Bar()
{
... code ...
}
我在其他地方注意到,如果我试图在函数之外设置断点,断点将自动移动到下面的下一个函数。但这些点实际上会停留在我放置它们的地方。
这是一个已知的bug吗?是我做错了什么吗?它可能涉及内联函数或在标头上声明的宏吗?是否有变通方法或解决方案?
编辑:调用堆栈:
> DirectX.dll!ErrHandling::ErrHandling() Line 31 C++
DirectX.dll!Write(wchar_t * level, const char * func, long nLine, wchar_t * line) Line 140 C++
DirectX.dll!cDirectX::Init(int parms, int screenWidth, int screenHeight, HWND__ * hwnd) Line 32 C++
ProjectDawn.exe!System::Initialize() Line 100 C++
ProjectDawn.exe!WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, char * lpCmdLine, int nShowCmd) Line 51 C++
[External Code]
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
这是最上面的一行(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;
}
我看到过类似的问题,这是由单个源文件中使用的不同行结尾引起的——有些行结尾是unix风格(LF),有些是windows(CRLF)。我不确定是否可以在visualstudio编辑器中看到行尾,但有"文件"->"高级保存"选项可以在保存时预先转换它们。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 选择要调用的构造函数
- 调用 ReadFile 程序后,在 debug_heap.cpp 中遇到断点
- 在WindBG断点命令中调用JavaScript函数
- 如何在gdb中为函数的所有调用设置断点
- 调用dll时从未达到断点
- GDB:调用特定对象的析构函数时的断点
- 在调用 abort() 时设置断点
- 在0X7c90120120e处从代码调用的用户断点
- 在注释行上调用了断点
- 设置依赖于调用栈的条件断点