shell在Ubuntu上运行addr2line时报错

Error message by shell on running addr2line pragmatically on Ubuntu

本文关键字:addr2line 运行 Ubuntu shell      更新时间:2023-10-16

我有以下代码:

        char command[256];
        sprintf(command,"addr2line %p -e xcep_app", trace[i]); 
        addr2lineWriter = popen(command, "r");
        if (addr2lineWriter == NULL) 
            flag = false;
        if (flag == true) //execute parsing the output only if the command ran in the first place
        {
            while (fgets(addr2line_output, sizeof(addr2line_output)-1, addr2lineWriter) != NULL) 
            {
                std::string addr2line_output_(addr2line_output);
                complete_backtrace_.push_back(addr2line_output_);
            }
            pclose(addr2lineWriter);
        }

一切正常,但我总是得到以下消息:sh: 1: Syntax error: word unexpected (expecting ")")它为什么会来,如何阻止它。还有,这是什么意思?我安装了gnome终端

这是基于错误消息的猜测。trace[i]为NULL,因此生成的命令为:

addr2line (nil) -e xcep_app

因此,被调用来执行命令的shell会抱怨括号。@WumpusQ。Wumbley报告ash将复制此消息:

ash -c 'addr2line (nil) -e xcep_app'