如何在Eclipse上更有效地调试循环?

时间:2017-08-20 23:46:45

标签: c eclipse

我正在努力彻底理解我在Github上找到的代码。我在Eclipse上运行此代码(版本:3.6.1 构建ID:M20100909-0800)。

我想有效地调试这些代码行:

        for (index_X = 0; index_X < nb_MCU_X; index_X++) {
          for (index_Y = 0; index_Y < nb_MCU_Y; index_Y++) {
            for (index = 0; index < SOS_section.n; index++) {
              uint32_t component_index = component_order[index];
              int nb_MCU = ((SOF_component[component_index].HV >> 4) & 0xf) * (SOF_component[component_index].HV & 0x0f);
              for (chroma_ss = 0; chroma_ss < nb_MCU; chroma_ss++) {
                unpack_block(movie, & scan_desc, index, MCU);
                iqzz_block(MCU, unZZ_MCU, DQT_table[SOF_component[component_index].q_table]);
                IDCT(unZZ_MCU, YCbCr_MCU_ds[component_index] + (64 * chroma_ss));
              }

              upsampler(YCbCr_MCU_ds[component_index], YCbCr_MCU[component_index],
                max_ss_h / ((SOF_component[component_index].HV >> 4) & 0xf), max_ss_v / ((SOF_component[component_index].HV) & 0xf), max_ss_h, max_ss_v);
            }

            if (color && (SOF_section.n > 1)) {
              YCbCr_to_ARGB(YCbCr_MCU, RGB_MCU, max_ss_h, max_ss_v);
            } else {
              to_NB(YCbCr_MCU, RGB_MCU, max_ss_h, max_ss_v);
            }

            screen_cpyrect(index_Y * MCU_sy * max_ss_h, index_X * MCU_sx * max_ss_v, MCU_sy * max_ss_h, MCU_sx * max_ss_v, RGB_MCU);
          }
        }

上面的代码包含许多循环,并且多次遍历每行代码是费力的(nb_MCU_X是18而nb_MCU_Y是32)。

我尝试在调试模式下更改index_Xindex_Y的值。我认为这样做会带我到程序中的一个点,在那里将处理更多的代码。但是,只有index_Xindex_Y更改为我给出的值,但所有其他相关值都没有随之更改。因此,程序的行为被扭曲,并开始表现不正常。

我尝试在此部分代码后立即设置断点。但是,它不允许我看到在处理上述代码部分之后发生的下一步。我想立即知道当index_Xindex_Y处于我选择的任何值时代码的状况。

Eclipse中有没有办法让 及时转发 并处理更多迭代而不是跨越代码的每一行?

例如,如果index_Y当前为0,我该怎么办?但是我想立即到达index_Y为7的程序中的某一点,其余代码也相应地更改?

0 个答案:

没有答案