第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從程序內(nèi)部調(diào)用gdb以打印其stacktrace的最佳方法?

從程序內(nèi)部調(diào)用gdb以打印其stacktrace的最佳方法?

富國滬深 2019-11-22 14:24:29
使用這樣的函數(shù):#include <stdio.h>#include <stdlib.h>#include <sys/wait.h>#include <unistd.h>void print_trace() {    char pid_buf[30];    sprintf(pid_buf, "--pid=%d", getpid());    char name_buf[512];    name_buf[readlink("/proc/self/exe", name_buf, 511)]=0;    int child_pid = fork();    if (!child_pid) {                   dup2(2,1); // redirect output to stderr        fprintf(stdout,"stack trace for %s pid=%s\n",name_buf,pid_buf);        execlp("gdb", "gdb", "--batch", "-n", "-ex", "thread", "-ex", "bt", name_buf, pid_buf, NULL);        abort(); /* If gdb failed to start */    } else {        waitpid(child_pid,NULL,0);    }}我在輸出中看到了print_trace的詳細(xì)信息。還有什么其他方法可以做到呢?
查看完整描述

3 回答

?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個贊

如果您使用的是Linux,則標(biāo)準(zhǔn)C庫包括一個名為的函數(shù)backtrace,該函數(shù)用幀的返回地址填充一個數(shù)組,以及另一個名為的函數(shù)backtrace_symbols,該函數(shù)將從中獲取地址backtrace并查找相應(yīng)的函數(shù)名。這些記錄在GNU C庫手冊中。


這些不會顯示參數(shù)值,源代碼行等,它們僅適用于調(diào)用線程。但是,它們應(yīng)該比以這種方式運(yùn)行GDB快得多(也許不那么松懈),因此它們有自己的位置。


查看完整回答
反對 回復(fù) 2019-11-22
  • 3 回答
  • 0 關(guān)注
  • 922 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號