gunl

导航

 

2011年12月30日

摘要: quick kmdb cheatsheetThis is mainly a reference for myself since I have been playing with OpenSolaris kernel internals lately:To enable kmdb edit the kernel’s grub entry and append -kto it.Break into kmdb: f1+aDisplay status: ::statusList available kmdb commands (and be amazed): ::dcmdsView register 阅读全文
posted @ 2011-12-30 10:37 gunl 阅读(240) 评论(0) 推荐(0) 编辑
 

2011年8月15日

摘要: Vim 支持 Tabs,也就是标签页编辑,很爽~操作标签页的基本命令如下::tabnew : 打开一个新的标签页。:tabprevious : 回到上一个标签页。:tabnext : 到下一个标签页。但是每次新建或者切换标签,都要打上这么一长串的命令,实在是麻烦,我们可以在配置文件中设置一下快捷键,如下::map <F5> :tabprevious<CR>:map <F6> :tabnext<CR>:map ^T :tabnew<CR>:imap <F5> <ESC>:tabprevious<CR> 阅读全文
posted @ 2011-08-15 16:06 gunl 阅读(766) 评论(0) 推荐(0) 编辑
 
摘要: 我是 vim 粉丝, 用了许久, 有一些自己的感受, 又到处挖到一些别人的技巧. 感觉对 vim粉丝比较有用, 就把它记在这儿. 希望借此文套出大家自己的巧活, 就正应了抛砖引玉的古话了.先稍为介绍一下 vim. vi 是 unix/linux 下极为普遍的一种文本编辑器, 大部分机器上都有. vi 有各种变种, 在不同的机器上常用不同的变种软件. 其中 vim 比较好用也用得比较广泛. vim 是 Vi IMproved 的缩写, 表示更好的 vi. 我个人觉得它是非常好的编辑器(为了避免 Emacs 粉丝挑眼, 就不说最好了). 没用过的也建议试试看, 当然 vim 对编写文本文件很方便好 阅读全文
posted @ 2011-08-15 16:05 gunl 阅读(17949) 评论(0) 推荐(2) 编辑
 
摘要: vim 显示tab键2010年12月20日 星期一 13:31Vim里面显示TAB键 1、文件中有 TAB 键的时候,你是看不见的。要把它显示出来: C代码:setlist:set list现在 TAB 键显示为 ^I,而 $显示在每行的结尾,以便你能找到可能会被你忽略的空白 字符在哪里。 2、方法1中这样做的一个缺点是在有很多 TAB 的时候看起来很丑。如果你使用一个有颜色的 终端,或者使用 GUI 模式,Vim 可以用高亮显示空格和TAB。 使用 'listchars' 选项: C代码:setlistchars=tab:>-,trail:-:set listchars 阅读全文
posted @ 2011-08-15 16:05 gunl 阅读(11443) 评论(0) 推荐(0) 编辑
 

2011年8月14日

摘要: 使用 mdb 模块调试程序mdb(1) 模块调试程序可以应用于以下文件类型:实时操作系统组件操作系统崩溃转储用户进程用户进程核心转储对象文件mdb 调试程序可为分析内核问题提供复杂的调试支持。本节概述 mdb 功能。有关 mdb 的完整讨论,请参阅《Solaris 模块调试器指南》。尽管 mdb 可用来改变实时内核状态,但 mdb 缺少 kmdb 提供的内核执行控制。因此,kmdb 是进行运行时调试的首选调试程序,而 mdb 调试程序更多用于静态情况。注 – mdb 的提示符为 >。模块调试程序入门mdb 为实现调试程序模块提供了大量编程 API,从而使驱动程序开发者可以实现自定义调试支 阅读全文
posted @ 2011-08-14 16:18 gunl 阅读(814) 评论(0) 推荐(0) 编辑
 
摘要: http://www.filibeto.org/sun/lib/solaris10-docs/E19253-01/819-7057/eupvn/index.html使用 kmdb 内核调试程序kmdb 调试程序是可提供以下功能的交互式内核调试程序:控制内核执行检查内核状态实时修改代码本节假定您已熟悉 kmdb 调试程序。本节重点介绍在设备驱动程序设计中非常有用的 kmdb 功能。要详细了解如何使用 kmdb,请参阅kmdb(1) 手册页和《Solaris 模块调试器指南》。如果您熟悉 kadb,请参阅 kadb(1M) 手册页以了解 kadb 与 kmdb 的主要差别。可以任意装入和卸载 km 阅读全文
posted @ 2011-08-14 16:17 gunl 阅读(4464) 评论(0) 推荐(0) 编辑
 
摘要: http://download.oracle.com/docs/cd/E19253-01/819-7057/euxdg/index.html使用 kmdb 和 mdb 执行的有用调试任务本节提供了有用的调试任务示例。除非特别说明,否则本节中的任务均可使用 mdb 或 kmdb 来执行。本节假定您已了解 kmdb 和 mdb 的基本使用知识。请注意,此处提供的信息取决于所使用系统的类型。这些示例是使用运行 64 位内核的 Sun Blade 100 工作站生成的。注意 –由于修改内核结构中的数据会导致无法恢复的数据损毁,因此务必要格外谨慎。请勿修改或依赖于不属于 Solaris DDI 结构中的 阅读全文
posted @ 2011-08-14 16:13 gunl 阅读(1232) 评论(0) 推荐(0) 编辑
 
摘要: 本文介绍使用kmdb和mdb调试Solaris内核的基本方法,kmdb和mdb是Solaris默认安装的内核模块调试器,可以用于调试和定位内核模块及驱动程序发生的错误。本文仅用于学习交流目的,错误再所难免,如果有勘误或疑问请与作者联系。关键词: mdb/kmdb/panic/hung/crashdump/dump/kernel debug/Solaris/OpenSolaris事后分析(Postmortem Debug)是目前主流的商业操作系统支持的特性之一,windows, Aix, Freebsd都支持CrashDump及事后分析,最近Linux也逐渐加入了Crashdump和分析工具的支 阅读全文
posted @ 2011-08-14 16:06 gunl 阅读(1753) 评论(0) 推荐(0) 编辑
 
摘要: 要将整数参数 maxusers 的值从 495 更改为 512,请执行以下操作:# mdb -kwLoading modules: [ unix krtld genunix ip logindmux ptm nfs ipc lofs ]> maxusers/Dmaxusers:maxusers: 495> maxusers/W 200maxusers: 0x1ef = 0x200> $q使用要更改的项的实际地址以及此参数将设置为的值来替换 maxusers。有关使用模块调试程序的更多信息,请参见《Solaris 模块调试程序指南》。使用 kmdb 或 mdb 调试程序时,不需 阅读全文
posted @ 2011-08-14 15:53 gunl 阅读(437) 评论(0) 推荐(0) 编辑
 
摘要: MDB分析Solaris内核死锁问题:一个实例本文通过一个实例,描述了如何使用MDB调试分析Solaris内核死锁的问题。死锁是多线程内核必须面对的问题。部分死锁可以通过精心设计来避免。但随着现在操作系统的复杂性和并发性不断增加,代码规模迅速膨胀, 我们难以避免引入一些具有潜在危险的代码。下面的例子就是我们在Solaris系统测试中,遇到的一个读写死锁导致的系统挂起,下面引用的代码都来自 www.opensolaris.org。内核提供的同步机制都可能导致死锁,比如互斥锁(mutex), 读写锁(rw lock)等。而我们这个例子遇到是读写锁引起的死锁。这个问题发生在x64平台系统测试过程中, 阅读全文
posted @ 2011-08-14 15:42 gunl 阅读(2809) 评论(0) 推荐(0) 编辑