调试
文章平均质量分 65
HaveFunInLinux
这个作者很懒,什么都没留下…
展开
-
东半球最先进的debug技巧
zhuang不论是什么行业里,能让人最兴奋的事情通常都是解决新奇的、高难度问题带来的刺激。在我的工作中,经常会遇到很多bug,乍一看,它们都是不可能的。不是不可能解决,而是完全不可能出现。就好象最前沿的科技揭示了一个新的奇怪的逻辑现象,以至于人的大脑完全无法理解。当然,这里我总结的这些bug都是很独特的,如果你想说是否能有某种最先进的系统性的方法能将这些bug归类,统一解决,那是愚转载 2014-08-08 22:40:37 · 566 阅读 · 0 评论 -
Windows CE: Prefetch Aborts, why they are difficult to locate
本文转载至:http://geekswithblogs.net/BruceEitman/archive/2008/05/23/windows-ce-prefetch-aborts-why-the-are-difficult-to-locate.aspxPrefetch aborts can be difficult to locate and fix. To understand why,转载 2015-05-11 17:09:02 · 780 阅读 · 0 评论 -
Enabling Stack Dumping in Linux Kernel
本文转载至:http://processors.wiki.ti.com/index.php/Enabling_Stack_Dumping_in_Linux_KernelPurposeIt can often be useful when debugging the kernel to be able to print the stack (and call trace) i转载 2015-01-19 23:29:00 · 1144 阅读 · 0 评论 -
[小技巧] gdb 里数值轮换
gdb 里表示 16进制, 8 进制, 2 进制分别是:0x 与 0 与 0b按16进制, 8进制, 2进制打印分别是:p/xp/op/t示例:按十六进制打印0b1011(gdb) p/x 0b1011$18 = 0xb原创 2015-06-03 10:05:09 · 1182 阅读 · 0 评论 -
用 Graphviz 可视化函数调用
本文转载至:http://www.ibm.com/developerworks/cn/linux/l-graphvis/转载说明:这种手法有一个比较大的问题就是代码需要重新编译,这其实在大部分情况下来说是不可以接受的。可以将以图形形式查看应用程序的调用过程看作是一个学习经历。这样做可以帮助您理解应用程序的内部行为,并获得有关程序优化方面的信息。例如,通过对那些经常调用的函数进行优化转载 2016-02-19 16:12:12 · 1585 阅读 · 1 评论 -
如何在linux下检测内存泄漏
本文转载至:http://www.ibm.com/developerworks/cn/linux/l-mleak/index.html本文针对 linux 下的 C++ 程序的内存泄漏的检测方法及其实现进行探讨。其中包括 C++ 中的 new 和 delete 的基本原理,内存检测子系统的实现原理和具体方法,以及内存泄漏检测的高级话题。作为内存检测子系统实现的一部分,提供了一个具有更好转载 2016-09-10 18:24:27 · 4037 阅读 · 0 评论 -
malloc 调用跟踪浅谈
之前转载了一篇文章,关于memory leak的检出。http://blog.csdn.net/robertsong2004/article/details/52496184这里面使用的方法需要去修改源代码,这是最大的问题。不修改源代码的方式,可以是实现一个库,这个库里实现了 malloc / free 的 wrapper,在 malloc / free 里对分配的信息原创 2016-09-10 19:16:06 · 2044 阅读 · 0 评论 -
gdb thread related command
本文转载至:http://www.mixed-mode.de/fileadmin/daten/Mixed_Mode/Downloads/MixedMode_GDB-Kurzreferenz.pdfThreads IWhich threads are available (gdb)info threadsSwitch to a th转载 2015-01-20 15:28:21 · 842 阅读 · 0 评论 -
[小技巧] gdb里设定动态库的位置
如果程序信赖的库的路径不在标准目录下原创 2014-11-21 09:40:24 · 6014 阅读 · 0 评论 -
80 多个 Linux 系统管理员必备的监控工具
随着互联网行业的不断发展,各种监控工具多得不可胜数。这里列出网上最全的监控工具。让你可以拥有超过80种方式来管理你的机器。在本文中,我们主要包括以下方面:命令行工具网络相关内容系统相关的监控工具日志监控工具基础设施监控工具监控和调试性能问题是一个艰巨的任务,但用对了正确的工具有时也是很容易的。下面是一些你可能听说过的工具,转载 2016-09-04 20:58:17 · 2243 阅读 · 0 评论 -
Linux 下使用 gdb 定位 crash 位置
下面这一段代码会出现SEGV错误。#include int foo(void){ int *i = NULL; *i = 0;}int main(void){ foo(); return 0;}执行后如下:$ ./foo 段错误 (核心已转储)但是没有发现 core 文件。需要设置一下。ulimit -c unlimited原创 2016-09-08 16:16:52 · 3767 阅读 · 0 评论 -
将 gdb 用作函数跟踪器 (Function Tracer)
参考:http://dustymabe.com/2012/10/14/trace-function-calls-using-gdb/可以使用下面的脚本来把 gdb 作为一个函数跟踪器。#!/bin/sh# Make a function call trace using GDB. This is stupid, but it should workif [原创 2016-09-08 17:21:42 · 1509 阅读 · 0 评论 -
Linux kernel debug技巧----开启DEBUG选项
本文转载至:http://www.wowotech.net/linux_application/kernel_debug_enable.htmlkernel的source code中有很多使用pr_debug/dev_dbg输出的日志信息(例如device tree解析的代码,drivers/of/fdt.c)。默认情况下,kernel不会将这些日志输出到控制台上,除非:1转载 2016-11-05 19:43:44 · 12867 阅读 · 0 评论 -
ARM: HOW TO ANALYZE A DATA ABORT EXCEPTION
QUESTIONMy ARM application does not work. When I run it in the simulatoror with my JTAG debugger (ULINK), I see that the program counter(R15) jumps to the labelDAbt_Handler?A. What does that mean?转载 2015-04-29 11:05:25 · 807 阅读 · 0 评论 -
ssh 无法自动登录问题解决
ssh 可以在远程的机器上设定 authorized_keys 自动登录。但是要注意的是:如果相关的 .ssh 目录和 authorized_keys 的访问权限没有设定正确,系统仍然会提示输入密码。使用如下方式来确保相关的目录和文件可以访问。$ chmod 700 .ssh$ chmod 600 .ssh/authorized_keys原创 2015-02-10 07:42:30 · 1041 阅读 · 0 评论 -
gdb 给断点设置命令列表
本文摘至:http://blog.csdn.net/water_cow/article/details/7214054通常,设置一个断点并且在上面中断后,一般会查询一些变量或做一些其他动作。使用命令列表(commands)就能使程序到达断点后自动执行这些动作。步骤如下:1. 设置断点2. 使用commands命令,用法(gdb)commands break_list,如:(gd转载 2015-02-07 12:54:04 · 2022 阅读 · 0 评论 -
C/C++程序在GDB调试状态时的信号响应
转载至:http://www.wuzesheng.com/?p=1188相信用GDB调试过程序的朋友都知道,C/C++程序在GDB调试状态是不能直接响应外部信号的。比如,你正在用GDB运行一个程序,然后,你按了Ctrl+C,GDB收到SIGINT信号,程序本身并不会收到这个信号。那么,倒底如何让GDB把信号传递给应用程序本身呢?且听我一一道来。GDB中有一个handle命令,可转载 2014-08-22 23:21:44 · 1207 阅读 · 0 评论 -
[资源推荐] Linux 性能调优工具
参考:http://www.brendangregg.com/linuxperf.html转载 2014-08-26 22:17:47 · 647 阅读 · 0 评论 -
Valgrind的快速入门指南
译至:http://www.valgrind.org/docs/manual/quick-start.html翻译 2014-08-27 09:39:09 · 1270 阅读 · 0 评论 -
[小技巧] gdb -tui
部分转载至:http://linux.cn/article-4302-1-rss.htmlgdb -tui: -tui Run GDB using a text (console) user interface.使用”-tui“选项可以将代码显示在一个漂亮的交互式窗口内(所以被称为“文本用户界面 TUI”),在这个窗口内可以使用光标来操控,同时在下面的GDB she原创 2014-11-26 09:24:59 · 1726 阅读 · 1 评论 -
Error: Remote HEAD refers to nonexistent ref, unable to checkout
本文译至:https://help.github.com/articles/error-remote-head-refers-to-nonexistent-ref-unable-to-checkout/转载 2014-11-25 11:42:40 · 3632 阅读 · 0 评论 -
bash 里设定调试语句
#!/bin/bashDEBUG=1function debug() { if [[ $DEBUG ]] then echo ">>> $*" fi}# For any debug messagedebug "Trying to find config file"原创 2014-11-27 21:25:28 · 648 阅读 · 0 评论 -
为函数添加enter和exit级trace
本文转载至:http://tonybai.com/2011/07/13/add-enter-and-exit-trace-for-your-function/日常开发中,我们为了辅助程序调试常常在每个函数的出入口(entry/exit)增加Trace,一般我们多用宏来实现这些Trace语句,例如:#ifdef XX_DEBUG_#define TRACE_ENTER() printf(转载 2014-12-15 16:53:09 · 986 阅读 · 0 评论 -
Linux系统启动时间的优化
本文转载至:http://www.ednchina.com/ART_31176_29_20023_TA_efe7dac8.HTM (1)首先是对Linux启动过程的跟踪和分析,生成详细的启动时间报告。 较为简单可行的方式是通过PrintkTime功能为启动过程的所有内核信息增加时间戳,便于汇总分析。PrintkTime最早为CELF所提供的一个内核补丁,在后来的Kern转载 2015-01-26 10:21:07 · 2576 阅读 · 0 评论 -
GCC 函数追踪功能
本文转载至:http://blog.linux.org.tw/~jserv/archives/001870.html昨天有一位同事問及 ARM call frame 相關的問題,我給的建議是透過 GCC Function instrumentation 的機制。該機制出現於 GCC 2.x,由 Cygnus (現為 RedHat) 所提出,在 GCC 中對應的選項為:"finstrument-转载 2014-12-05 18:02:17 · 887 阅读 · 0 评论 -
通过编程方式获取backtrace
本文转载至:在用GDB调试器时可以查看所谓的Backtrace,它包含一系列的函数调用信息,用命令backtrace或bt可以在GDB中查看函数调用栈的信息。有些场合没法使用GDB时,则可以用glibc库函数中的一些相关函数来得到backtrace的信息(在头文件execinfo.h中):// 获取将backstrace信息,将地址存到buffer中。// 参数si转载 2014-12-05 17:55:33 · 1977 阅读 · 0 评论 -
VirtualBox Failed to load VMMR0.r0 VERR_SUPLIB_OWNER_NOT_ROOT 错误
这个是由于某个目录的所有者非root导致。查看$HOME目录下面的:VirtualBox VMs/xxxx/Logs/VBox.log这里的xxxx 是对应的虚拟机名。可以发现:00:00:00.304 pdmR3LoadR0U: pszName="VMMR0.r0" rc=VERR_SUPLIB_OWNER_NOT_ROOT szErr="The owner is not root:原创 2014-12-12 17:47:34 · 2115 阅读 · 0 评论 -
gdb 里设置临时变量
使用 set 命令。(gdb) set $i="hello"(gdb) ptype $itype = char [6](gdb) set $i=1(gdb) ptype $itype = int(gdb) set $i=(char)1(gdb) ptype $itype = char(gdb) set $i=(short)1(gdb) ptype $i原创 2015-01-20 14:54:40 · 17628 阅读 · 0 评论 -
Linux 有了 “DTrace”
本文转载至:http://www.solidot.org/story?sid=50169Linux 没有 DTrace(名字),但现在有了DTrace(功能)。DTrace 是源自 Solaris 操作系统的动态跟踪工具,提供了高级性能分析和调试功能,它的源代码采用 CDDL 许可证,不兼容Linux内核使用的 GPLv2 许可证,无法直接移植。但随着 BPF(Berkeley P转载 2016-10-28 21:23:06 · 4122 阅读 · 0 评论