社区
新手乐园
帖子详情
不会被编译器优化掉的“空语句”
tmlgb2312
2010-09-08 04:10:25
通常在debug下断点的时候会需要一些“空语句”,断点就打在“空语句”上。可是像一个分号的这种空语句会被编译器直接优化掉,断点会直接下移,所以请大家想想有什么“空语句”不会被优化掉,且字符数最少。
对“空语句”的要求是不能有生命期超过这一行的变量。
我的想法是delete(new int);
...全文
419
23
打赏
收藏
不会被编译器优化掉的“空语句”
通常在debug下断点的时候会需要一些“空语句”,断点就打在“空语句”上。可是像一个分号的这种空语句会被编译器直接优化掉,断点会直接下移,所以请大家想想有什么“空语句”不会被优化掉,且字符数最少。 对“空语句”的要求是不能有生命期超过这一行的变量。 我的想法是delete(new int);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tmlgb2312
2010-09-10
打赏
举报
回复
[Quote=引用 21 楼 rendao0563 的回复:]
assert(1);
[/Quote]
错误。
用assert(0)虽不靠谱,但不会被优化掉。
tmlgb2312
2010-09-10
打赏
举报
回复
[Quote=引用 19 楼 happynwt 的回复:]
if (1) ;
不过为什么要这样呀?
[/Quote]
错误。
rendao0563
2010-09-09
打赏
举报
回复
assert(1);
iambic
2010-09-08
打赏
举报
回复
回复里还有图解教人结贴……
happynwt
2010-09-08
打赏
举报
回复
if (1) ;
不过为什么要这样呀?
「已注销」
2010-09-08
打赏
举报
回复
__asm pause
or
__asm nop // 这个可能不行
duke56
2010-09-08
打赏
举报
回复
构造的INT 3断点,用OD等加载运行后就直接断在INT 3上了...
不信的话,可以试试...^_^
duke56
2010-09-08
打赏
举报
回复
[Quote=引用 15 楼 lovestefanie 的回复:]
引用 14 楼 duke56 的回复:
可以考虑在内存中构造个INT 3的断点
C/C++ code
_asm
{
_emit 0xCD
_emit 0x03
}
这啥意思?
[/Quote]
_emit是VC下的一个内联汇编时用的...就是构造一字节的代码,用来构造没有的指令
和一汇编里的DB(好像是微软的汇编)差不多
CD 03就是INT 3的代码
lovestefanie
2010-09-08
打赏
举报
回复
[Quote=引用 14 楼 duke56 的回复:]
可以考虑在内存中构造个INT 3的断点
C/C++ code
_asm
{
_emit 0xCD
_emit 0x03
}
[/Quote]
这啥意思?
duke56
2010-09-08
打赏
举报
回复
可以考虑在内存中构造个INT 3的断点
_asm
{
_emit 0xCD
_emit 0x03
}
lovestefanie
2010-09-08
打赏
举报
回复
for(volatile int i=0;i<1;i++)
老邓
2010-09-08
打赏
举报
回复
老邓
2010-09-08
打赏
举报
回复
[Quote=引用 8 楼 tmlgb2312 的回复:]
不懂如何结贴……
[/Quote]
就在顶楼你的头像上面,红色字体的按钮“结帖”。
追bug时我也经常这样干。
tomatobin
2010-09-08
打赏
举报
回复
不懂的
nscboy
2010-09-08
打赏
举报
回复
优化态下还能下断点.学到了.
tmlgb2312
2010-09-08
打赏
举报
回复
不懂如何结贴……
tmlgb2312
2010-09-08
打赏
举报
回复
[Quote=引用 3 楼 freezezdj 的回复:]
断点打在下一行上,不就行了吗?
[/Quote]
因为有时候下一行也放不了断点。
比如有时你只是想看一个值是多少,而匹配的宏是MAKELRESULT之类拼接出来的,懒得去算具体是多少
switch (a)
{
case MACRO1:
free(0);
break;
case MACR01:
free(0);
break;
}
只是举个例子,事实上找bug点时经常会有这种需要。
tmlgb2312
2010-09-08
打赏
举报
回复
1楼好点子。估计没什么更省的了。
ccltiancai
2010-09-08
打赏
举报
回复
赞1楼,反正删除空指针总是无害的:)
skyworth98
2010-09-08
打赏
举报
回复
很奇怪他为什么需要这么干……
加载更多回复(3)
MATLAB
编译器
基于MATLAB 2018b版本介绍MATLAB
编译器
。介绍如何利用
编译器
将MATLAB代码编译为独立应用程序或组件,并在没有安装MATLAB的计算机上进行部署。 所在套餐:MATLAB核心知识点系列课程-CSDN程序员研修院,不断更新和增加...
c语言
编译器
优化
没被调用的函数,
编译器
优化
及
优化
问题的调试方法
优化
影响了那些内容局部变量这里提到的局部变量包含一个 block 中...函数中的语句的位置写代码的时候通常会认为执行的逻辑是按照预定的排布依次执行的,可
优化
可能会对语句的位置进行调整,甚至将一些语句与其它的...
编译器
优化
技术
编译器
优化
技术 对于前面的即时编译、提前编译的讲解,我们对代码的编译技术有了一定的了解。
编译器
的目标虽然是做由程序代码翻译为本地机器码的工作,但其实难点并不在于能不能成功翻译出机器码,输出代码
优化
质量...
关于gcc
编译器
对for空循环的
优化
上图是下面函数进行gcc编译不添加-O2
优化
选项的反汇编程序,可以看出不
优化
时,汇编出来的...上图是前一个函数进行gcc编译添加-O2
优化
选项的反汇编结果,可以看出使用了-O2
优化
后,整个delay函数里面的for空循环被直
04.
编译器
优化
与SIMD指令集
局部可见函数static,使用此关键词声明,就
不会
将该函数暴露给其他函数,此时
编译器
优化
后,压根就
不会
定义该函数,直接内联。对于非4的倍数,
编译器
也会自动进行边界特判。对于循环之中的判断语句,
编译器
会挪到...
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章