vs2013调试源码错位问题最新解决方法

最近调试某个.h里的inline函数时,调试器的当前调试行,和实际代码功能总是不符(用汇编窗口可以清楚的看到),正好差两行

这个问题还以为是大文件特有的,这个.h有一千多行

其实这个问题已经存在几个月了,今天实在忍不住,写了个简单的test函数到处插入,最终定位到一个函数有问题

template<typename T>
  static bool get(lua_State* L, LuaType<Type_Bool>*, int index, T& value)
  {
   bool ok = lua_isboolean(L, index) != 0;
   if (ok)
    value = lua_toboolean(L, index) != 0;
   else
   {
    bool ok = lua_tointeger(L, index) != 0;
    if (ok)
     value = lua_tointeger(L, index) != 0;
    else
     value = false;
   }
   return ok;
  }

本以为是里面的行末注释有问题,删了注释发现还不行,所以就想看看这段函数的编码有没有问题,用UltraEdit打开,想找那个隐藏字符显示的功能一时没找到

换EditPlus,还是一时没找到,但是此时突然发现两个编辑器的行号不对应,再仔细一看,发现EditPlus里有几个行居然没换行显示在同一行里了!而UltraEdit是换行的

在EditPlus里重新把这个函数换行好,回到VS再调试再也没有源码调试错位问题了!

看来问题就在于调试器或者说链接器对文本的解析,跟VS Editor的解析,还是稍微有一点差距的



你可能感兴趣的:(调试,编辑器,VS2013)