zoukankan      html  css  js  c++  java
  • windgb,sos,adplus,tinyget常用命令

    1. adplus

    这个脚本工具是和debugger tools一起安装的。可以自动的帮你监视某个程序,并在你设定的条件下生成一个dump文件保存在debugger目录下。使用这些工具时,都需要将命令提示符窗口切到debugger目录。常见的用法如下:

    adplus  -hang -pn w3wp.exe    在生成hang状态下的dump时,adplus都会立即产生dump文件。在输入此命令并按enter后,此命令将立即获取一个w3wp.exe的内存切片。但是此命令会弹出一个确认窗口,如果你觉得这个比较麻烦的话,你可以在最后加上–quiet 命令来避免窗口的弹出。

    adplus -hang -p 1234 –quiet  相信你很快就能发现,上行命令是使用的process name,而这个命令是使用的process id。同时,它可以直接生成dump,不会弹出确认窗口。

    adplus -crash -pn w3wp.exe   此命令是获取程序crash时的dump。它不同于hang立即得到dump,它会一直attachw3wp.exe程序上,直到w3wp.exe程序crash。其它类似参数的效果都同上。

    当然,如果你使用Vista的话,你可以很方便的在任务管理器(task manager)中通过右键 Create dump file获取dump文件。

     

    2.  tinyget

    这个工具是用来对一个网站进行压力测试的。最常用的命令是:

    tinyget -srv:localhost -uri:/BuggyBits/FeaturedProducts.aspx -threads:30 -loop:50  该命令表示同时启动30个线程发送50个请求到本地IISBuggyBits站点的FeaturedProducts页面。你也可以在命令窗口中使用”tinyget /?”查看更多详细的命令。

     

    3.  windbg

    Windbg的命令都是一点号(.)来开始的,它不同于叹号开始的命令(!),叹号开始的命令都是sos.dll中的命令。

    .load sos 每次打开windbg调试.net程序的dump时,我们首先要输入此命令。它的用途是使得windbg可以支持托管代码(managed code)的调试。

    .time  查看dump文件生成时的时间,其中包括系统当前时间,开机总时间,程序运行总时间,程序运行在内核态总时间以及用户态总时间。

     

    4. sos.dll

    最强大的功能还要数sos.dll中的命令,它是我们调试.net程序的基础。下面介绍一些基本命令:

    !help 它用来查看每个命令的用法。如!help !threads,用来查看!threads命令的具体用法。如果直接使用!help,它将列出sos的基本信息。

    !threadpool通过这个命令,我们可以很容易的看出在dump文件生成时的确切CPU使用率,同时,我们也可以看到队列中等待的work requeststimers以及completion port threads等信息。Timerswork requests以及completion port threads都是CLR的线程种类,在以后的文章中我会详细介绍。

    !runaway它是用来罗列所有正在运行的线程以及它们的CPU占用率。通过这个命令,我们可以很容易的去trouble shooting一些CPU占用率过高的问题。

    !threads 它是用来罗列所有正在运行的托管(managed)线程的详细信息,如CLR线程所在的appdomain等等。如果线程的ID显示XXXX,说明这个线程已经结束,等待被回收。

    ~[id]s 此命令用来切换到某一特定线程。如 ~20s代表切换到ID20的线程。

    !clrstack 此命令用来显示此线程的managed codecallstack。我们可以加上-p参数来得到更加详细的信息。

    !dumpobject(!do) 通过这个命令,我们可以查看某个特定addressobject信息。如果这个address指向一个string,我们就可以看到这个string内存储了什么值。

    !dumpstackobjects(!dso)  此命令用来查看被当前线程堆栈引用的所有托管对象。

    !dumparray(!da) 当我们查看线程堆栈上的object时,我们可以使用!do命令。但是如果该object是一个array的话,!do只能得到array本身的信息,并非其存储的内容。此时!da就发挥了用场。

    !objsize 如果我们想查看一个objecttotal size的时候,我们需要使用!objsize命令。比如当我们!da一个array时,它显示的size仅仅是包含的typesize,并非实际的size。我们可以使用!objsize address来查看这个array的实际size

    !dumpheap 它是用来查看堆上所有的object。通常我们加上 –stat参数来帮我们做个归类,否则它会罗列出许多繁杂的信息。同时,它还有几个比较常用的参数,如-type-mt-type用来列出某一特定类型的所有object,如!dumpheap –type System.String将列出堆上所有的string-mt是用来列出某一特定MethodTable的所有object。大家知道,每一个引用类型都对应一个MethodTable,假设System.String类型的MethodTable02c39310,那么我们还可以通过!dumpheap –mt 02c39310来找到堆上所有的string

     

    转自:http://blog.csdn.net/liujinyu123/article/details/7023152

  • 相关阅读:
    Java finally语句到底是在return之前还是之后执行(JVM字节码分析及内部体系结构)?
    关于git的文件内容冲突解决
    linux快速搭建
    2019年开始
    如何生成git ssh key
    2018年6月,最新php工程师面试总结
    引用变量 php面试总结1
    windows通过node环境搭建安装npm,cnpm,vue-cli
    回归程序世界,努力做出成绩
    我是谁?我在哪里?
  • 原文地址:https://www.cnblogs.com/shouwu/p/2802636.html
Copyright © 2011-2022 走看看