调用sbrk时出现sbrk.c不存在的错误是什么原因?
错误含义
你看到的不是程序运行报错,是gdb等调试工具的提示信息:当你单步调试尝试进入sbrk函数内部时,调试器无法找到sbrk函数对应的源代码文件sbrk.c。这个提示不会影响sbrk函数的正常执行,也不代表你的调用逻辑存在问题。
触发原因
- sbrk是glibc标准库封装的系统调用,日常安装的glibc二进制包仅包含编译后的可执行二进制代码,默认不附带库的源代码。调试时如果主动进入库函数内部,调试器找不到对应源码就会输出该提示。如果你不需要调试标准库实现,单步调试时使用
next指令(而非step指令)跳过进入库函数内部,就不会出现该提示。 - 你提供的示例代码存在笔误:判断条件中使用的数组
list未定义,你实际声明的数组是list1,该笔误会先导致编译阶段报错,若强行运行也会触发不可预期的异常。
内容的提问来源于stack exchange,提问作者Art smart
相关产品推荐
相关产品推荐

