调试期间的奇怪问题“没有调试器目标代码类型的可执行代码与此行关联”

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

此程序(即 sum_remainder)计算 src[i] 的每个元素的余数之和。这样:

  • sum += src[i] % 除数

这个程序没有基于调试器(F5,使用visual studio)的任何错误/警告,但是当我通过设置断点逐行调试时,它会自动从主程序中的“return 0”开始。好像内存里没有这个函数,其实我在反汇编里查过,这个函数不存在, 当我尝试在 sum_remainder 函数的第一行(即函数定义)设置断点时,我读到了这个错误信息(注意:这个错误信息没有在错误列表中列出):

  • 当前不会命中断点。没有调试器目标代码类型的可执行代码与该行关联。可能的原因包括:“条件编译,或者当前调试器代码类型不支持此行的目标架构”

    int sum_remainder(int* src, int length, int* dst, int divisor) {
          int sum = 0;
          for (int i = 0; i < length; i++) {
              dst[i] = src[i] % divisor;
              sum += dst[i];
          }
          return sum;
      }
    
      int main(void) {
          int src[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
          int dst[10] = { 0 };
          int ret = sum_remainder(src, 10, dst, -2);
          return 0;
      }
    
c visual-studio-debugging
© www.soinside.com 2019 - 2024. All rights reserved.