位置: 编程技术 - 正文
推荐整理分享在Linux与Windows上获取当前堆栈信息的方法(简述linux与windows相比,有哪些优势),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:简述linux与windows相比,有哪些优势,linux和windows的联系,linux使用windows.h,简述linux与windows相比,有哪些优势,简述linux与windows相比,有哪些优势,简述linux与windows相比,有哪些优势,实现linux和windows,linux和windows可以共存吗,内容如对您有帮助,希望把文章链接给更多的朋友!
在编写稳定可靠的软件服务时经常用到输出堆栈信息,以便用户/开发者获取准确的运行信息。常用在日志输出,错误报告,异常检测。
在Linux有比较简便的函数获取堆栈信息:
以上代码从参考的stackoverflow中稍作修改而来。核心就是backtrace与backtrace_symbols两个函数。
Windows下推荐用StackWalker这个开源代码,支持X,AMD,IA。
如果你需要一个最简的代码,那么下面是我抽取出来的代码,明显比Linux要复杂一些。(Win的很多功能实现起来要复杂一些,当然也有很多功能实现要比Linux简单很多。)
我会做一些讲解,在后面。
编译请链接dbghelp.lib
核心就是StackWalk与SymGetSymFromAddr,SymGetLineFromAddr。
StackWalk用于获取下一层堆栈。
SymGetSymFromAddr用于获取当前函数名。
SymGetLineFromAddr用于获取函数所在文件及行号。
为了这三个函数正常工作,还要初始化符号相关功能(SymInitialize),取得当前线程描述表(RtlCaptureContext),加载用到的模块(SymLoadModule)。
用到了<DbgHelp.h> <TlHelp.h>这两个头文件。
上面代码执行后会在控制台输出堆栈信息。
这篇在Linux与Windows上获取当前堆栈信息的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持积木网。
shell如何记录用户的IP与命令详解 记录输入的命令history命令可以查看用户输入过的命令,一个典型history命令输出如下:--::cd---::catindex.html--::vimindex
详谈Linux写时拷贝技术(copy-on-write)必看篇 COW技术初窥在linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了写时复制技术,
Linux 中wget命令详细介绍 两个Linux命令wget和exec一个linux命令:wgetftp访问命令来下载文件的三种方式1)
友情链接: 武汉网站建设