我想调试一个用于响应键盘输入的程序的一部分,例如 Ctrl + ↑。
所以,我在区域感兴趣的代码中放了一个断点。但是,一旦按下 Ctrl 键,程序就会跳转到该断点。 之前发生了我按了一个箭头键,所以我发现这种情况很难调试。
那么,如何调试多键输入事件,例如 Ctrl + ↑?
答案 0 :(得分:5)
如果您使用Visual Studio调试代码,则可以通过向断点添加条件来调试此情况。
要执行此操作,请右键单击代码语句左侧的断点图标,然后单击 Condition...
适用于您的情况的条件示例为:
e.Control && e.KeyCode == Keys.Up
现在您可以调试多键输入事件,例如 Ctrl + ↑,而无需更改任何代码。
答案 1 :(得分:4)
您可以使用System.Diagnostics.Debug.WriteLine将调试信息写入Listeners集合中的跟踪侦听器。
示例:
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.Up)
System.Diagnostics.Debug.WriteLine("Up with control have pressed");
}
在Visual Studio菜单栏中,选择View-> Output以查看输出。
答案 2 :(得分:2)
您使用什么事件?的KeyDown?尝试使用KeyUp。在释放CTRL +组合键之前,它不会触发。
答案 3 :(得分:2)
如何将断点放在if
子句中?这样只有在满足条件时它才会中断。
答案 4 :(得分:1)
查看Debug.Assert方法。它将允许您仅根据条件进行调试。执行将继续,直到条件为假。您可以执行类似(伪代码)的操作:Debug.Assert(NOT up key pressed);
这将使它忽略任何按键但按下向上键。
答案 5 :(得分:1)
通常,您唯一的选择是将某些消息打印到控制台或错误日志。否则,调试器UI将干扰您的代码。例如,Visual Studio调试器可以在命中断点时打印表达式的值,因此您不需要编写特殊代码。