不会被编译器优化掉的“空语句”

tmlgb2312 2010-09-08 04:10:25
通常在debug下断点的时候会需要一些“空语句”,断点就打在“空语句”上。可是像一个分号的这种空语句会被编译器直接优化掉,断点会直接下移,所以请大家想想有什么“空语句”不会被优化掉,且字符数最少。

对“空语句”的要求是不能有生命期超过这一行的变量。

我的想法是delete(new int);
...全文
419 23 打赏 收藏 转发到动态 举报
写回复
用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)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧