linux C++中输出debug和trace信息

简介:

     (这里指LINUX G++环境)

一,三个重要的宏:

1 __LINE__ 当前的行号

2 __FILE__ 当前的文件名(xxx.cpp)

3 __PRETTY_FUNCTION__/__FUNCTION__ 带签名和不带签名的函数名

 

二,打印stack trace

通过两个函数:

backtrace();

backtrace_symbols();

需要 -g -rdynamic 参数

 
  1. #include  <stdio.h> 
  2. #include  <exception> 
  3. #include    "string.h" 
  4. #include    "stdlib.h" 
  5. #include  <execinfo.h> 
  6.  
  7. void print_trace(); 
  8. void test(); 
  9.  
  10. void print_trace (void
  11.     void *array[10]; 
  12.     size_t size; 
  13.     char **strings; 
  14.     size_t i; 
  15.  
  16.     size = backtrace (array, 10); 
  17.     strings = backtrace_symbols (array, size); 
  18.  
  19.     printf ("Obtained %zd stack frames.\n", size); 
  20.  
  21.     for (i = 0; i < size; i++) 
  22.         printf ("%s\n", strings[i]); 
  23.  
  24.     free (strings); 
  25.  
  26. void test() 
  27.     print_trace(); 
  28.  
  29. int main(int argc, char *argv[]) 
  30.     printf("%d\n", __LINE__); 
  31.     printf("%s\n", __FILE__); 
  32.     printf("%s\n", __PRETTY_FUNCTION__); 
  33.  
  34.     test(); 
  35.     return 0; 

 

编译和输出

:!g++ -Wall -g -rdynamic ddd.cpp;./a.out

35

ddd.cpp

int main(int, char**)

Obtained 5 stack frames.

./a.out(_Z11print_tracev+0x16) [0x40090e]

./a.out(_Z4testv+0x9) [0x40098d]

./a.out(main+0x50) [0x4009e0]

/lib64/tls/libc.so.6(__libc_start_main+0xdb) [0x302af1c4bb]

./a.out(__gxx_personality_v0+0x42) [0x40086a]



本文转自 dogegg250 51CTO博客,原文链接:http://blog.51cto.com/jianshusoft/855110,如需转载请自行联系原作者


相关文章
|
6月前
|
存储 缓存 Linux
Linux系统中如何查看CPU信息
本文介绍了查看CPU核心信息的方法,包括使用`lscpu`命令和读取`/proc/cpuinfo`文件。`lscpu`能快速提供逻辑CPU数量、物理核心数、插槽数等基本信息;而`/proc/cpuinfo`则包含更详细的配置数据,如核心ID和处理器编号。此外,还介绍了如何通过`lscpu`和`dmidecode`命令获取CPU型号、制造商及序列号,并解释了CPU频率与缓存大小的相关信息。最后,详细解析了`lscpu`命令输出的各项参数含义,帮助用户更好地理解CPU的具体配置。
706 8
|
7月前
|
消息中间件 Linux C++
c++ linux通过实现独立进程之间的通信和传递字符串 demo
的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。 在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方
148 16
|
8月前
|
缓存 安全 Linux
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
1358 23
|
10月前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
10月前
|
缓存 监控 Linux
|
10月前
|
网络协议 Linux 虚拟化
如何在 Linux 系统中查看进程的详细信息?
如何在 Linux 系统中查看进程的详细信息?
831 1
|
11月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
1830 3
|
11月前
|
Linux C语言 C++
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
1936 0
vsCode远程执行c和c++代码并操控linux服务器完整教程
|
12月前
|
算法 数据安全/隐私保护 C++
超级好用的C++实用库之MD5信息摘要算法
超级好用的C++实用库之MD5信息摘要算法
283 0
|
Linux API 开发工具
Linux内核开发流程指南 - 8. 获取更多信息【ChatGPT】
Linux内核开发流程指南 - 8. 获取更多信息【ChatGPT】

热门文章

最新文章