什么是你最喜欢的虚拟线来突破点?

时间:2008-11-07 19:24:04

标签: debugging

我们中很少有人会否认调试器的功能,但为了使它更有用,可以使用一些技巧。

例如在Python中,你可以使用 传递 来做任何事情,除了让你有空间放置一个断点并允许你观察Watch中的值窗口。

在C#中,我曾经做 GC.Collect() ,但现在我使用 if(false){}

你最有趣的虚拟线是什么?

12 个答案:

答案 0 :(得分:29)

在C#中,你可以使用它:

System.Diagnostics.Debugger.Break();

它将强制断点。

答案 1 :(得分:13)

在C#中,在Visual Studio中

{}

;

答案 2 :(得分:8)

Debug.Assert(true);,自动从发布版本中编译。

答案 3 :(得分:5)

volatile int e = 9;

易失性意味着编译器不会删除它,因为我没有读取变量。 '9'只是为了非零。零对我的口味来说太普遍了。

答案 4 :(得分:2)

in gcc / g ++:

assert("breakpoint");

因为断言的任何非0 / null值都被视为真。

甚至

__asm__("nop");

至少我知道会为断点发出一个指令字节。 ;)

答案 5 :(得分:2)

我用

int x = 0;

我总是确保在完成调试后删除此行。

答案 6 :(得分:2)

我从来没有专门写过什么来打破,但如果我这样做,我会写

int moot;

当有一些我不关心但必须提供的“out”参数时,我会使用这个参数。

答案 7 :(得分:2)

对于C / C ++,我使用

__asm int 3;

这将在调试器将捕获的那行代码处生成断点异常。但需要注意的是,如果没有在调试器中运行,那么您的程序将因该异常而崩溃。

答案 8 :(得分:1)

在VB6中,我自己使用冒号。 :

答案 9 :(得分:1)

在c ++中我使用

Sleep(0) 

有时,或只是找到一个已使用的变量并将其分配给自己:

i = i;

答案 10 :(得分:1)

是的,奇怪的是VS2010调试器如果它们在一个空语句(例如分号)上会改变断点。尽管它看起来像,在调试版本中你通常仍然可以在空的C#控制块或分号上放置一个断点,它会被正确命中。在被这一段时间烦恼之后,我只是创建了这个用来代替:

public static class Nop { public static void X() { } };

编辑:要使用它,请将Nop.X()放入代码中......

答案 11 :(得分:0)

不是很复杂,但功能齐全。

bool bp;

bp = true; //whereever I need to break.