在IDA中加载了一个.o或者是一个可执行文件的时候,有些行号是显示不出来的,这也是因为在我们的程序或者是目标文件生成的时候的版本不一样造成的。
也就是说,比如在GNU中用cc -g a.c -o a这样生成的是个debug版本的,那么在用IDA加载的时候,它会读取我们目标文件或者是可执行程序中的.line这个节,这个.lline
就是将我们原始的C源文件的行号和.text节中机器指令之间的映射。所以,当我gcc生成的是一个release版本的时候,这个节是没有的,这就是问什么有时候,IDA中查看汇编代码的时候,无法显示对应的行号的原因了,就是因为你打开的可能已经是一个release版本的程序了。