You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过命令行工具从.elf二进制文件中按变量名提取常量字符串值?

从编译后的ELF程序中提取常量变量值

需求背景

现有如下C代码:

#include <stdio.h>

const char greeting[] = "hello world";

int main() {
    printf("%s!\n", greeting);
    return 0;
}

在Ubuntu中通过gcc -g main.c -o main.exe编译后,希望直接提取变量greeting对应的常量字符串值"hello world",不想手动解析readelf命令的输出,需要能直接按指定格式输出结果的命令行工具。

解决方案:使用GDB实现

因为编译时添加了-g调试参数,程序包含完整的符号信息,GDB可以直接通过变量名定位并读取其值,完全符合需求:

简洁输出格式

执行以下命令可直接输出带引号的字符串值:

gdb -batch -ex 'printf "\"%s\"\n", greeting' main.exe

执行结果:

"hello world"

详细输出格式

如果需要带描述性的详细输出,可使用:

gdb -batch -ex 'printf "The constant value of the variable \"greeting\" in `main.exe` is:\n\"%s\"\n", greeting' main.exe

执行结果:

The constant value of the variable "greeting" in `main.exe` is:
"hello world"

说明

  • -batch参数让GDB执行完指定命令后自动退出,无需交互
  • -ex用于指定要执行的GDB命令,这里通过printf直接读取并格式化输出变量greeting的内容
  • 因为greeting是const char[]类型,直接用printf "%s"即可输出完整字符串内容

内容的提问来源于stack exchange,提问作者sdbbs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:39:21