是否可以从使用调试信息编译的程序中获取字符串的地址?
e.g。,:
int main(void)
{
// Call function
f();
return 0;
}
是否可以获取字符串“// Call function”的地址? 如果我使用“info line x”,我会得到一个地址,但它不包含字符串。它包含调用f();
的指令答案 0 :(得分:0)
是否可以获取字符串“// Call function”的地址?
不,因为在编译的程序中该字符串不是。
编译过程的第一步是预处理,它会扩展所有宏定义,并删除所有注释。
您可以通过运行
查看该步骤的输出gcc -E t.c
您的评论将不在那里。
可以让gcc在预处理源中留下注释(带有-C
标志),但是不可能将注释“编译”到最终的二进制文件中。