IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++打印堆栈 -> 正文阅读

[C++知识库]C++打印堆栈

今日发现http_msg_server异常,遂查看日志,发现了这么一坨东西:

2021-08-24 20:13:20.102 [ERROR] [0x7f7fe5a80820] [IM] - <HttpConn.cpp>|<178>|<Close>,erase handle:99 ,./http_msg_server(_Z13GetTraceStackv+0x2f) [0x4f766f]
./http_msg_server(_ZN9CHttpConn5CloseEv+0x36) [0x4da342]
./http_msg_server(_ZN9CHttpConn15OnWriteCompleteEv+0x18) [0x4dab76]
./http_msg_server(_ZN9CHttpConn4SendEPvi+0xc6) [0x4da306]
./http_msg_server(_ZN9CHttpConn12SendAndCloseEiPKc+0xad) [0x4e099d]
./http_msg_server(_ZN9CHttpConn24onHandleNginxHealthCheckERKSsS1_+0x8d) [0x4dda83]
./http_msg_server(_ZNKSt7_Mem_fnIM9CHttpConnFvRKSsS2_EEclIIS2_S2_EvEEvPS0_DpOT_+0x91) [0x4e9c97]
./http_msg_server(_ZNSt5_BindIFSt7_Mem_fnIM9CHttpConnFvRKSsS3_EEPS1_St12_PlaceholderILi1EES8_ILi2EEEE6__callIvJS3_S3_EJLm0ELm1ELm2EEEET_OSt5tupleIJDpT0_EESt12_Index_tupleIJXspT1_EEE+0xa0) [0x4e8c1c]
./http_msg_server(_ZNSt5_BindIFSt7_Mem_fnIM9CHttpConnFvRKSsS3_EEPS1_St12_PlaceholderILi1EES8_ILi2EEEEclIJS3_S3_EvEET0_DpOT_+0x5e) [0x4e6f0a]
./http_msg_server(_ZNSt17_Function_handlerIFvRKSsS1_ESt5_BindIFSt7_Mem_fnIM9CHttpConnFvS1_S1_EEPS5_St12_PlaceholderILi1EESA_ILi2EEEEE9_M_invokeERKSt9_Any_dataS1_S1_+0x4f) [0x4e5455]
./http_msg_server(_ZNKSt8functionIFvRKSsS1_EEclES1_S1_+0x61) [0x4e2749]
./http_msg_server(_ZN9CHttpConn6OnReadEv+0x38c) [0x4da8e2]

给我整懵了,这是崩溃了?

还是咋回事?

于是看了下代码:

void CHttpConn::Close() {
    if (m_state != CONN_STATE_CLOSED) {
        m_state = CONN_STATE_CLOSED;

        loge("erase handle:%d ,%s", m_conn_handle, GetTraceStack().c_str());

        g_http_conn_map.erase(m_conn_handle);
        netlib_close(m_sock_handle);
        handle_map_.clear();

        ReleaseRef();
    }
}

这个GetTraceStack() 看起来是打印堆栈的意思

std::string GetTraceStack()
{
   static const int MAX_STACK_FRAMES = 12;
   void *pStack[MAX_STACK_FRAMES];

   char ** pStackList = NULL;
   int frames = backtrace(pStack, MAX_STACK_FRAMES);
   pStackList = backtrace_symbols(pStack, frames);
   if (NULL == pStackList)
      return "" ;

   std::string szStackInfo;
   for (int i = 0; i < frames; ++i)
   {
      if (NULL == pStackList[i])
         break;

      szStackInfo += pStackList[i];
      szStackInfo += "\n";
   }

   return szStackInfo;    
}

原理是正常的,然后通过对堆栈一分析,应该是健康检查导致http链接关闭,所以频繁的会打印这个错误。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-25 12:01:58  更:2021-08-25 12:04:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 6:43:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计