警告:无法解析.gnu_debugdata部分; LZMA支持在编译时被禁用

时间:2017-04-18 21:53:09

标签: c++ gdb core gdbserver alpine

将核心转储文件加载到gdb时,我收到以下警告,看起来加载某些符号也因此而失败。

var userID = "83738373";
var arrayOfCommands =  {
     "commands": [
       {
          "user": "Rusty",
         "user_id": "83738373",
         "command_name": "TestCommand",
         "command_reply": "TestReply"
       }
     ] 
  }

//Function to return a simple boolean
function exceededMaximumComands(user){
    var count = 0;
    for (let i = 0; i < arrayOfCommands.commands.length; i++) { 
      if (arrayOfCommands.commands.user_id === userID) {
          count++;
          if(count > 2){ 
              return true;
          }
      }
    }
}

//Reusable function for throwing error message
function maximumExceeded(){
    //change this with your code
    message.reply("You cannot make more than 3 commands.");
}

//Where the code executes
var hasExceeded = exceededMaximumComands(userID);

//Check the result
if (hasExceeded){
  maximumExceeded();
}

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:7)

  

警告:无法解析.gnu_debugdata部分; LZMA支持在编译时被禁用

GDB支持名为"mini debug info"的功能。此功能允许将完整调试信息的子集添加到结果文件的特殊部分。一些Linux发行版,如Fedora,使用它来发送部分debuginfo,以便堆栈跟踪可以更容易“符号化”。

此部分使用LZMA进行压缩,因此必须使用LZMA支持构建GDB才能阅读该部分。

您的GDB不是使用此支持构建的,因此它会通知您它找到了context.Respond(...)部分,但无法读取它。

通常情况下这并不重要。这可能意味着您会看到来自系统库的代码的堆栈跟踪稍差。

修复是重建GDB,确保在运行.gnu_debugdata之前安装了LZMA开发包。