调试时设置断点后出现 此处无源代码可显示

来源:互联网 发布:2k14mc 模式数据 bug 编辑:程序博客网 时间:2024/05/22 16:52

现象:当前在原代码处设置断点,却在执行到此断点时“此处无源代码可显示”。

原因:多线程环境,如果你的一个while循环在不停读一个变量,如果在本先线程内,两次运行到读这个变量之间的代码没有写这个变量,代码在编译时会被优化成直接从寄存器读取而不是内存。如果其他线程会改写此变量,当前线程却会一直读入未改写的变量值。由于是优化成读寄存器了,当前的代码处就无法设置断点了。奇怪的是单线程环境不会出错,照理也是读寄存器的,应该还需要加个条件,其他线程必须改写了此变量。

解决:变量声明为volatile。

原创粉丝点击