【问题标题】:How to set breakpoint conditions in CLion如何在 CLion 中设置断点条件
【发布时间】:2018-11-21 09:35:43
【问题描述】:

我在使用 C 应用程序时遇到了一些问题。我在CLion(windows)中写作,我有一个来自1 to 1000for循环,但在i = 600附近的某个时候,循环内的代码返回了错误。

此时,我对为什么会出现这个问题不感兴趣,而是对如何找到它感兴趣,所以我尝试调试应用程序但无法点击F7 600 次。

那么当我说 590 时,有什么方法可以开始调试吗?

【问题讨论】:

  • 你试过reading the documentation吗?
  • @fredrik 是的,我做到了,但我不清楚条件的语法方式。我试过 i=590 但没有用。
  • 感谢您提出问题。请包含一个 main() 函数并提供一个Compilable, Minimal, Complete, and Verifiable Example。这有助于我们帮助您。如果您可以在仍然创建故障的同时使您的问题尽可能简单,它将帮助我们隔离使您的代码正常工作的问题。用代码回答问题更容易。
  • 条件必须是i == 590。因为i=590 会进行分配而不是比较并且不会发生中断。
  • @JohnMurray 实际代码太复杂了(代码在不同的文件中分开等),所以简化起来有点困难。虽然使i == 590 有效,但我的问题解决了。

标签: c debugging clion


【解决方案1】:

CLion 允许您设置条件断点。考虑下面的代码,它会在循环 601 上表现出不良行为,因为它会在数组末尾运行。

要捕捉这一点,请在进行分配的行上设置断点。

然后,右键单击断点,在对话框的条件框中添加以下内容:

i == 599

然后,运行代码,调试器只会在 i == 599 时停在断点处。太神奇了!

#include <stdio.h>

int main()
{
    char array[600];

    for (int i = 0; i < 1000; i++) {
        // code that does something

        array[i] = 0xff; // set breakpoint here!
        //, then right click and add conditional:  i == 590
    }

    printf("Hello, World!\n");
    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    • 2020-02-12
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多