您最喜欢在哪条虚拟线上设置断点? [已关闭]

问题描述 投票:0回答:12

我们很少有人会否认调试器的强大之处,但为了使其更有用,可以使用一些技巧。

例如在 Python 中,您可以使用 pass 除了为您留出放置断点的空间并允许您观察“监视”窗口中的值之外,什么也不做。

在C#中,我以前使用GC.Collect(),但现在我使用if (false){}

你最好玩的假台词是什么?

debugging
12个回答
33
投票

在C#中,你可以使用这个:

System.Diagnostics.Debugger.Break();

它将强制断点。


18
投票

在 C# 中、在 Visual Studio 中

{}

;

8
投票

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


5
投票
volatile int e = 9;

Volatile 意味着编译器不会删除它,因为我不读取该变量。 “9”只是为了使其非零。 零对我来说太常见了。


2
投票

在 gcc/g++ 中:

assert("breakpoint");

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

甚至

__asm__("nop");

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


2
投票

对于 C/C++,我使用

__asm int 3;

这将在调试器将捕获的该代码行生成断点异常。但需要注意的是,如果您的程序未在调试器内运行,则会因该异常而崩溃。


2
投票

我用

int x = 0;

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


2
投票

我从来没有写过专门为了继续下去的东西,但如果我这样做了,我会写

int moot;

当存在一些我不关心但必须提供的必需“out”参数时,我会使用此参数。


2
投票

确实,如果断点位于空语句(例如分号)上,VS2010 调试器会移动断点,这很奇怪。不管它看起来像什么,在调试版本中,您通常仍然可以在空的 C# 控制块或分号上放置断点,并且它会被正确命中。在对此感到恼火一段时间后,我刚刚创建了这个来代替使用:

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

编辑:要使用它,请将

Nop.X()
放入您的代码中...


1
投票

在 VB6 中,我单独使用冒号。

:


1
投票

在c++中我使用

Sleep(0) 

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

i = i;

0
投票

不是很复杂,但很实用。

bool bp;

bp = true; //whereever I need to break.
© www.soinside.com 2019 - 2024. All rights reserved.