在Clion 2017.3.4中进行调试时的反汇编视图 - 这是什么意思?

时间:2018-04-27 14:31:52

标签: c debugging clion disassembly

我目前在C99中使用Clion 2017.3.4。

在尝试运行和调试我的程序时,调试器跳转到“反汇编视图”,我想知道问题是什么。

基本上,函数得到一个季节(类型),一个输入字符串(season_info)和一个指向输入字符串中不同位置的索引。

该函数应将年份返回为整数,而输入为字符串

当我进入free()行时,会显示反汇编视图。 任何想法是什么问题? 通常反汇编视图意味着什么?

int GetSeasonYear(Season season, const char* season_info, int *index){ 

char* tmp_str = GetStringByLine(season_info, index);
if(tmp_str == NULL){
    SeasonDestroy(season);
    return 0;
}

season->season_year = atoi(tmp_str);
free(tmp_str);

return 1;

}

这是GetSeasonYear函数中使用的函数(虽然我检查它并且工作正常)。

char* GetStringByLine(const char* season_info, int* index){ // change back to static

int i = 0;

while(season_info[i] != '\n'){
    i++;
}

char* tmp_str = malloc(sizeof(char)*(i+1));
if(tmp_str == NULL){
    return NULL;
}

memcpy(tmp_str, season_info, sizeof(char)*i);
tmp_str[i+1]='\0';

*index = i;

return tmp_str;

}

感谢

2 个答案:

答案 0 :(得分:0)

free()是调用系统释放内存。它很可能是通过高优化编译而没有调试符号编译的,因此调试器可以做的最好的事情就是向您展示它正在执行的反汇编机器代码。 基本上,这是正常的。踩到这样的电话也没什么好处。

答案 1 :(得分:0)

你正在进入一个你自己的功能(免费) a)没有来源 要么 b)有源,但debuuger找不到它。