成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 在Linux與Windows上獲取當(dāng)前堆棧信息的方法

在Linux與Windows上獲取當(dāng)前堆棧信息的方法

熱門標(biāo)簽:地圖標(biāo)注人員分布 400的電話一般從哪里辦理 春運(yùn)地圖標(biāo)注app 梧州防封電銷卡 上海機(jī)器人外呼系統(tǒng)哪家好 昆明電銷機(jī)器人價格 益陽400電話申請辦理流程 怎么用百度地圖標(biāo)注坐標(biāo) 江西全自動外呼系統(tǒng)報價

在編寫穩(wěn)定可靠的軟件服務(wù)時經(jīng)常用到輸出堆棧信息,以便用戶/開發(fā)者獲取準(zhǔn)確的運(yùn)行信息。常用在日志輸出,錯誤報告,異常檢測。

在Linux有比較簡便的函數(shù)獲取堆棧信息:

#include stdio.h>
#include execinfo.h>
#include signal.h>
#include stdlib.h>
#include unistd.h>


void handler(int sig) {
 void *array[5];
 size_t size;

 // get void*'s for all entries on the stack
 size = backtrace(array, 5);

 // print out all the frames to stderr
 fprintf(stderr, "Error: signal %d:\n", sig);
 char** msgs = backtrace_symbols(array, size);
 for(int i=1;isize  msgs[i];++i)
 printf("[%d] %s\n", i, msgs[i]);
 exit(1);
}

void baz() {
 int *foo = (int*)-1; // make a bad pointer
 printf("%d\n", *foo);  // causes segfault
}

void bar() { baz(); }
void foo() { bar(); }


int main(int argc, char **argv) {
 signal(SIGSEGV, handler); // install our handler
 foo(); // this will call foo, bar, and baz. baz segfaults.
}

以上代碼從參考的stackoverflow中稍作修改而來。核心就是backtrace與backtrace_symbols兩個函數(shù)。

Windows下推薦用StackWalker這個開源代碼,支持X86,AMD64,IA64。

如果你需要一個最簡的代碼,那么下面是我抽取出來的代碼,明顯比Linux要復(fù)雜一些。(Win的很多功能實(shí)現(xiàn)起來要復(fù)雜一些,當(dāng)然也有很多功能實(shí)現(xiàn)要比Linux簡單很多。)

我會做一些講解,在后面。

#include "stdafx.h"
#include Windows.h>
#include iostream>
#include DbgHelp.h>
#include TlHelp32.h>

using namespace std;

HANDLE ph;

void baz()
{
 int* v = 0;
 *v = 0;
}
void bar()
{
 baz();
}

void foo(){
 __try {
  bar();
 }
 __except(EXCEPTION_EXECUTE_HANDLER) {
  auto sire = SymInitialize(ph, 0, FALSE);
  sire = SymSetOptions(SymGetOptions() | SYMOPT_LOAD_LINES | SYMOPT_FAIL_CRITICAL_ERRORS);
  CONTEXT ctx = { 0 };
  ctx.ContextFlags = CONTEXT_FULL;
  RtlCaptureContext(ctx);
  STACKFRAME64 sf = { 0 };
 #ifdef _M_IX86 // ignore IA64
  auto imageType = IMAGE_FILE_MACHINE_I386;
  sf.AddrPC.Offset = ctx.Eip;
  sf.AddrPC.Mode = AddrModeFlat;
  sf.AddrFrame.Offset = ctx.Ebp;
  sf.AddrFrame.Mode = AddrModeFlat;
  sf.AddrStack.Offset = ctx.Esp;
  sf.AddrStack.Mode = AddrModeFlat;
 #elif _M_X64
  auto imageType = IMAGE_FILE_MACHINE_AMD64;
  sf.AddrPC.Offset = ctx.Rip;
  sf.AddrPC.Mode = AddrModeFlat;
  sf.AddrFrame.Offset = ctx.Rsp;
  sf.AddrFrame.Mode = AddrModeFlat;
  sf.AddrStack.Offset = ctx.Rsp;
  sf.AddrStack.Mode = AddrModeFlat;
 #endif

  MODULEENTRY32 me;
  auto snap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, GetCurrentProcessId());
  auto info = Module32First(snap, me);
  while (info) {
   auto dw = SymLoadModule64(ph, 0, me.szExePath, me.szModule, (DWORD64)me.modBaseAddr, me.modBaseSize);
   if (!Module32Next(snap, me))break;
  }
  CloseHandle(snap);
  auto thread = GetCurrentThread();

  PIMAGEHLP_SYMBOL64 sym = (IMAGEHLP_SYMBOL64 *)malloc(sizeof(IMAGEHLP_SYMBOL64) + 100);
  if (!sym)
   return;
  memset(sym, 0, sizeof(IMAGEHLP_SYMBOL64) + 100);
  sym->SizeOfStruct = sizeof(IMAGEHLP_SYMBOL64);
  sym->MaxNameLength = 100;

  IMAGEHLP_LINE64 line = { 0 };
  line.SizeOfStruct = sizeof(line);
  for (;;) {
   auto result = StackWalk(imageType, ph, thread, sf, ctx, 0, SymFunctionTableAccess64, SymGetModuleBase64, 0);
   if (result) {
    DWORD64 offset = 0;
    DWORD offset_for_line = 0;
    CHAR und_fullname[100];

    if (sf.AddrPC.Offset != 0) {
     if (SymGetSymFromAddr64(ph, sf.AddrPC.Offset, offset, sym)) {
      UnDecorateSymbolName(sym->Name, und_fullname, 100, UNDNAME_COMPLETE);
      cout  und_fullname;
     }

     if (SymGetLineFromAddr64(ph, sf.AddrPC.Offset, offset_for_line, line)) {
      cout  " "  line.FileName  "("  line.LineNumber  ")";
     }
     cout  endl;
    }
   }
   else
    break;
  }
  SymCleanup(ph);
 }
}
int main()
{
 ph = GetCurrentProcess();
 foo();
 return 0;
}

編譯請鏈接dbghelp.lib

核心就是StackWalk與SymGetSymFromAddr64,SymGetLineFromAddr64。

StackWalk用于獲取下一層堆棧。

SymGetSymFromAddr64用于獲取當(dāng)前函數(shù)名。

SymGetLineFromAddr64用于獲取函數(shù)所在文件及行號。

為了這三個函數(shù)正常工作,還要初始化符號相關(guān)功能(SymInitialize),取得當(dāng)前線程描述表(RtlCaptureContext),加載用到的模塊(SymLoadModule64)。

用到了DbgHelp.h> TlHelp32.h>這兩個頭文件。

上面代碼執(zhí)行后會在控制臺輸出堆棧信息。

這篇在Linux與Windows上獲取當(dāng)前堆棧信息的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

標(biāo)簽:惠州 懷化 贛州 河南 新疆 亳州 北京 九江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在Linux與Windows上獲取當(dāng)前堆棧信息的方法》,本文關(guān)鍵詞  在,Linux,與,Windows,上,獲取,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《在Linux與Windows上獲取當(dāng)前堆棧信息的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于在Linux與Windows上獲取當(dāng)前堆棧信息的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    久久久久久久久影院| 国产精品亚洲综合久久| 综合激情国产一区| 性高爱久久久久久久久| 国产欧美在线视频| 欧美电影《轻佻寡妇》| 日韩精品视频免费| 免费高清在线视频一区·| 夜夜揉揉日日人人青青一国产精品| 欧美精品99久久| 国产性生活视频| 久久久婷婷一区二区三区不卡| 国产精品调教| 538国产视频| 亚洲AV无码精品色毛片浪潮| 免费毛片网站在线观看| 日日夜夜天堂| 影音先锋中文字幕在线观看| 正在播放91九色| 精品一区二区成人免费视频| 日本激情在线观看| 久久艹在线视频| 亚洲3atv精品一区二区三区| 四虎wwwcom| 精品久久久久久中文字幕一区奶水| 国产精品麻豆欧美日韩ww| 亚洲欧美一二三| 精品无码av一区二区三区| 国产黑丝在线观看| 久久天天躁狠狠躁老女人| 五月婷婷六月丁香综合| 亚洲欧美一区二区三区久本道91| 国产欧美日韩综合精品二区| 国产丝袜高跟一区| 激情久久久久久久| 欧美日韩亚洲视频一区| 99久久国产热无码精品免费| 久久国产精品亚洲人一区二区三区| 欧美黑人xxxx| 神马久久久久久久| 欧美做受xxxxxⅹ性视频| 亚洲一区二区四区| 久久国产精品网| 精品高清在线| 五月综合激情日本mⅴ| 国产视频一二三四区| 9i看片成人免费高清| 欧美日本黄视频| 校园春色影音先锋| 国产视频综合在线| a级毛片免费| 成年人视频观看| 国产一区二区三区四区五区在线| 99热99在线| 中文字幕一区日韩精品欧美| 欧美亚洲精品一区二区| 日本一区二区在线视频观看| 国产精品成人观看视频国产奇米| 国产呦系列欧美呦日韩呦| 中文字幕乱在线伦视频中文字幕乱码在线| 日韩在线一二三| 黄视频在线播放| 国内精品在线观看视频| 玖玖爱在线精品视频| 风间由美性色一区二区三区四区| 欧美性猛交xxx乱大交3蜜桃| 国产午夜精品一区二区理论影院| 日韩三级视频在线播放| 日韩在线短视频| 男女羞羞视频在线观看| 精品国产导航| 国产精品三区四区| 久久99国产综合精品免费| 偷拍25位美女撒尿视频在线观看| 一本一本久久a久久精品综合妖精| 国产精品第一视频| 毛片免费在线观看| 亚洲精品久久久久久宅男| 天堂在线资源8| 国产一区私人高清影院| 豆花视频一区二区| 黑人极品videos精品欧美裸| 欧美黄网在线观看| 亚洲第一级黄色片| 亚洲黄色录像| 麻豆国产精品| 一本久久a久久免费精品不卡| 成人午夜在线影院| 91超薄肉色丝袜交足高跟凉鞋| 欧美一区在线看| 蜜桃视频成人在线观看| 国产麻豆视频一区| 免费一级特黄毛片| 亚洲综合清纯丝袜自拍| 自拍亚洲国产| 日本一区二区免费看| 最近国语视频在线观看免费播放| 女人在下体塞跳蛋在线观看| 貂蝉被到爽流白浆在线观看| 国产91富婆露脸刺激对白| 一区二区三区在线高清| 国产高潮国产高潮久久久91| 日本国产在线观看| 中文字幕av一区二区三区| а√天堂资源国产精品| 日本最新中文字幕| 国产波霸爆乳一区二区| 亚洲最新永久观看在线| 久久av一区二区| 国产视频一区在线观看| 黑人巨大精品欧美一区二区奶水| 91在线网站| 国产日韩精品入口| 日韩久久在线| 永久免费观看精品视频| 亚洲熟女乱色一区二区三区久久久| www.日本精品| 精品国产伦一区二区三区免费| 男人添女人下面免费视频| 麻豆传媒在线播放| 天堂av资源在线| 亚洲国产欧美一区二区丝袜黑人| 精品一区二区三区三区| 国产精品国产国产aⅴ| 亚洲天堂精品在线观看| www视频在线观看| 网上成人av| 无套内谢丰满少妇中文字幕| 你懂的网址国产 欧美| 欧美第一页在线| 成人一区福利| 717成人午夜免费福利电影| 韩国理伦片久久电影网| 爽爽视频在线观看| 日韩精品无码一区二区| 国产精品18hdxxxⅹ在线| 三级男人添奶爽爽爽视频| 九九九伊在线综合永久| 宇都宫紫苑在线播放| 天堂网www在线网| 黄色在线观看国产| 麻豆极品一区二区三区| 日本猛少妇色xxxxx免费网站| 97秋霞电影网| 日韩精品欧美在线| jiuse.com91视频| 懂色av一区二区三区免费看| 九色在线视频观看| 亚洲裸体俱乐部裸体舞表演av| 亚洲成人自拍视频| 在线免费看黄色片| 亚洲精品无码一区二区| 亚洲精品传媒| 午夜精品亚洲一区二区三区嫩草| 亚洲精品一区二区二区| 亚洲成年人电影网站| 国产福利在线播放| 国产日本欧美一区二区三区| 欧美精品一区二区三区在线四季| 国产欧美日韩成人| 欧美丰满艳妇bbwbbw| 先锋资源男人站| 中文字幕日韩av| 国产激情一区二区三区在线观看| 一色桃子在线| 亚洲视频一区二区三区四区| 免费精品视频在线| 国产精品一国产精品k频道56| 91影院在线观看| 青春草国产成人精品久久| 北条麻妃一区二区三区中文字幕| 激情小说中文字幕| 亚洲国产精品一区二区久久| 日本新janpanese乱熟| 国产男女在线观看| 精品裸体bbb| 国模吧视频一区| www.av中文字幕| 91av免费观看91av精品在线| 熟妇高潮精品一区二区三区| 久久久久久久九九九九| 欧美va天堂va视频va在线| 黄色在线看片| 韩国精品久久久999| 国产欧美日韩免费看aⅴ视频| 国产在线视视频有精品| 韩国av电影在线观看| 欧美性久久久久| 国产福利视频在线| 亚洲成人中文在线| 日韩av高清在线| 日本熟伦人妇xxxx| 国产精品7m视频| 欧美日韩精品一区视频| 91精品国产高清久久久久久久久| 国产一区二区三区av在线| 亚洲精品在线国产| 91蝌蚪|人| 日本网站在线观看一区二区三区| 欧美在线啊v一区| 丝袜理论片在线观看| 一区二区三区视频免费视频观看网站| 成人免费在线视频网| 国产精品美乳在线观看| 亚洲免费电影在线观看| 日韩爱爱小视频| 久久精品人人做人人爽电影蜜月| 男女作爱免费网站| 欧美jizzhd欧美精品巨大| 极品国产人妖chinesets亚洲人妖| 香蕉免费毛片视频| 欧美激情亚洲视频| 久久精品女人的天堂av| 亚洲成人精品一区二区| 国产二区在线播放| 一区二区三区在线视频看| 蜜芽在线免费观看| 337p粉嫩大胆噜噜噜噜噜91av| ckplayer中文字幕| 精品久久久久久| 影音先锋日韩资源| 久久国产婷婷国产香蕉| 日韩在线第七页| 亚洲成人免费网站| 海角社区69精品视频| 在线观看免费观看在线91| 国产乱人伦偷精品视频不卡| 成人高清视频免费观看| 国产熟女一区二区三区五月婷| 日韩禁在线播放| 日韩黄色在线视频| 欧美精品xxxxx| 男女啪啪免费体验区| 日韩欧美中文字幕一区二区| 午夜精品成人在线视频| 亚洲精品一区二区三区蜜桃久| 一区二区视频免费观看| 国产手机在线观看| 九九热精品在线| 先锋男人资源站| av影院在线播放| 另类free性欧美护士| 久操手机在线视频| 秋霞午夜一区二区三区视频| 看**视频a级毛片| 五月婷婷综合激情| 日韩高清国产一区在线| 亚洲午夜av久久乱码| 日韩中文字幕电影| 伊人久久综合影院| 亚洲网站在线看| av大大超碰在线| 欧美日韩福利在线| 亚洲精品中文字幕成人片| 蜜桃欧美视频| 日本欧美大码aⅴ在线播放| 日本一区二区三区高清不卡| 国精一区二区| 性欧美成人播放77777| 第四色在线视频| 草莓视频成人appios| 色哟哟国产精品免费观看| www999久久| 小说区图片区亚洲| 超碰中文字幕在线观看| 三级久久三级久久久| 欧美变态xxxx| 公交车强行挺进岳身体| 日本高清无吗v一区| 免费观看国产精品| 欧美伦理在线视频| 国产成人精品视频在线观看| 波多野结衣视频在线播放| 色94色欧美sute亚洲线路一ni| 一区二区三区在线电影| 欧美双性人妖o0| 久草福利资源在线观看| 中文字幕你懂的| 丁香花在线观看完整版电影| 中中文字幕av在线| 中文字幕av一区二区三区谷原希美| 欧美做受高潮6| 亚洲一卡二卡区| 无吗不卡中文字幕| 无码人妻精品一区二区三区99v| www.色婷婷| 亚洲男人都懂的网站| 欧美日韩一区二区在线播放| 欧美少妇精品| 中字幕一区二区三区乱码| 日韩少妇视频| 色一情一区二区三区四区| 欧美视频免费播放| 国产又粗又猛又爽又黄的视频小说| 久久亚洲免费| 蜜桃导航-精品导航| **女人18毛片一区二区| www.成人在线.com| 无码少妇一区二区三区| 久久高清国产| jizz一区二区三区| 夜夜躁很很躁日日躁麻豆| 亚洲在线观看免费视频| 久久久久久久香蕉网| 国产传媒欧美日韩成人精品大片| 中文字幕高清在线播放| 中国女人内谢69xxx视频| 777奇米成人网| 国产精品网站大全| 成人动漫视频在线观看| 日本一道在线观看| 日本不卡视频在线观看| 日本丰满少妇一区二区三区| 欧美日韩国产一中文字不卡| 日本在线中文电影| 欧美aaa视频| 美女免费免费看网站| 国产黄色免费| 极品粉嫩小仙女高潮喷水久久| 成人xvideos免费视频| 日韩欧美二区三区| 91麻豆产精品久久久久久夏晴子| 精品一区二区视频在线观看| 91年精品国产| 日韩免费一区| 亚洲男女自偷自拍| 日本欧美在线| 欧美亚洲天堂|