Visual Studio 2013 c++ -如何确定哪一行写入我的变量

Visual Studio 2013 C++ - How to determine which line write to my variable?

本文关键字:一行 变量 我的 c++ 2013 Studio 何确定 Visual      更新时间:2023-10-16

今天我遇到了一个奇怪的问题,我的一个全局变量不知怎么的被破坏了。我试着在运行时修改它(为它分配了一些键),而我按住按钮是可以的,但一旦释放它,不太重要的字节就归零(损坏)。事实上,它在这两个值之间跳舞,我使用欺骗引擎来检查值。

我检查了对它的所有引用,我可以肯定地说,我只在程序启动时写入它,后来只从它读取。所以很可能是指针坏了,溢出了,或者别的什么。

我附加了作弊引擎的调试器,很容易找到哪个汇编代码写入它(我可以看到函数调用的确切名称),并试图确定哪一行是坏的,但是当观察代码时,这两个函数调用之间没有命令。我已经在我的代码中使用了安全函数(strcpy_s,…),并且总是使用sizeof宏,不确定哪里会出错。

是否有一种方法在Visual Studio中确定哪一行写到我的变量(地址)?或任何帮助,不胜感激。

你将会浪费内存——某些东西将会在变量之前的块中写入内存,但是"溢出"到变量所在的内存位置。我要做的是把一个内存断点上(检查VC文档,如果你不能从断点菜单中找出它),等待它改变。然后你可以在调用堆栈中看到哪些例程正在被处理,哪些应该进行内存更新(例如c风格的字符串清除或memset或类似)。