【问题标题】:Gcc address sanitizer offlineGcc地址清理器离线
【发布时间】:2019-02-07 02:16:44
【问题描述】:

我正在使用 GCC 4.8.1 并打开了地址清理选项,即我正在使用 -fsanitize=address 进行编译和链接。使用这个旧版本的 GCC 不提供有价值的输出。它需要一个符号。在较新版本上无需额外的应用程序。我无法在目标机器上安装 LLVM 包,所以我的问题是:是否可以离线执行分析?我的意思是:我可以从目标机器获取输出,然后在开发机器上使用符号器分析结果吗?

【问题讨论】:

  • 另一台机器上的gcc版本是多少? gcc ABI 必须在这些机器之间兼容。你需要一个符号器的静态库来链接它。
  • 总是 4.8.1 但带有 llvm-symbolizer

标签: gcc address-sanitizer


【解决方案1】:

您可以将经过清理的可执行文件的未符号化输出通过管道传输到目标机器或开发机器上的asan_symbolize script

请注意,默认情况下asan_symbolize 会尝试在运行它的机器上的可执行文件中定位符号。如果目标和开发可执行文件不匹配,您需要使用 -s 标志来指定目标 sysroot。

【讨论】:

    猜你喜欢
    • 2018-04-22
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 2011-05-11
    • 2018-05-17
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多