Linux crash工具

Linux crash工具
Linux crash工具

什么是 crash

如前文所述,当 linux 系统内核发生崩溃的时候,可以通过 kdump 等方式收集内核崩溃之前的内存,生成一个转储文件 vmcore。内核开发者通过分析该 vmcore 文件就可以诊断出内核崩溃的原因,从而进行操作系统的代码改进。那么 crash 就是一个被广泛使用的内核崩溃转储文件分析工具,掌握 crash 的使用技巧,对于定位问题有着十分重要的作用。

回页首

使用 crash 的先决条件

由于 crash 用于调试内核崩溃的转储文件,因此使用 crash 需要依赖如下条件:

1. kernel 映像文件 vmlinux 在编译的时候必须指定了 -g 参数,即带有调试信息。

2. 需要有一个内存崩溃转储文件(例如 vmcore),或者可以通过 /dev/mem 或

/dev/crash 访问的实时系统内存。如果 crash 命令行没有指定转储文件,则 crash 默认使用实时系统内存,这时需要 root 权限。

3. crash 支持的平台处理器包括:x86, x86_64, ia64, ppc64, arm, s390, s390x ( 也有部分 crash 版本支持 Alpha 和 32-bit PowerPC,但是对于这两种平台的支持不保证长期维护 )。

4. crash 支持 2.2.5-15(含)以后的 Linux 内核版本。随着 Linux 内核的更新,crash 也在不断升级以适应新的内核。

回页首

crash 安装指南

要想使用 crash 调试内核转储文件,需要安装 crash 工具和内核调试信息包。不同的发行版安装包名称略有差异,这里仅列出 RHEL 和 SLES 发行版对应的安装包名称如下:

表 1. crash 工具和内核调试包

系统版本crash 工具名称内核调试信息包

RHEL6.2 crash kernel-debuginfo-common

kernel-debuginfo

SLES11SP2 crash kernel-default-debuginfo

kernel-ppc64-debuginfo

以 RHEL 为例,安装 crash 及内核调试信息包的步骤如下:

rpm -ivh crash-5.1.8-1.el6.ppc64.rpm

rpm -ivh kernel-debuginfo-common-ppc64-2.6.32-220.el6.ppc64.rpm

rpm -ivh kernel-debuginfo-2.6.32-220.el6.ppc64.rpm

回页首

启动 crash

启动参数说明

使用 crash 调试转储文件,需要在命令行输入两个参数:debug kernel 和 dump file,其中 dump file 是内核转储文件的名称,debug kernel 是由内核调试信息包安装的,

不同的发行版名称略有不同,以 RHEL 和 SLES 为例:

RHEL6.2:/usr/lib/debug/lib/modules/2.6.32-220.el6.ppc64/vmlinux

SLES11SP2:/usr/lib/debug/boot/vmlinux-3.0.13-0.27-ppc64.debug

使用 crash -h 或 man crash 可以查看 crash 支持的一系列选项,这里仅以常用的选项为例说明如下:

-h:打印帮助信息

-d:设置调试级别

-S:使用 /boot/System.map 作为默认的映射文件

-s:不显示版本、初始调试信息等,直接进入命令行

-i file:启动之后自动运行 file 中的命令,再接受用户输入

crash 报告分析

crash 命令启动后,会产生一个转储文件的分析报告摘要,如下图所示。

清单 1. crash 报告

[root@curlylp1 ~]# crash

crash 5.1.8-1.el6

Copyright (C) 2002-2011 Red Hat, Inc.

Copyright (C) 2004, 2005, 2006 IBM Corporation

Copyright (C) 1999-2006 Hewlett-Packard Co

Copyright (C) 2005, 2006 Fujitsu Limited

Copyright (C) 2006, 2007 VA Linux Systems Japan K.K.

Copyright (C) 2005 NEC Corporation

Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc.

Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc.

This program is free software, covered by the GNU General Public License,

and you are welcome to change it and/or distribute copies of it under certain conditions. Enter "help copying" to see the conditions.

This program has absolutely no warranty. Enter "help warranty" for details.

GNU gdb (GDB) 7.0

Copyright (C) 2009 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law. Type "show copying"

and "show warranty" for details.

This GDB was configured as "powerpc64-unknown-linux-gnu"...

KERNEL: /usr/lib/debug/lib/modules/2.6.32-220.el6.ppc64/vmlinux

DUMPFILE: /dev/mem

CPUS: 2

DATE: Thu Feb 2 00:31:34 2012

UPTIME: 58 days, 22:52:43

LOAD AVERAGE: 76.11, 77.40, 77.83

TASKS: 481

NODENAME: https://www.360docs.net/doc/bc15914910.html,

RELEASE: 2.6.32-220.el6.ppc64

VERSION: #1 SMP Wed Nov 9 08:02:37 EST 2011

MACHINE: ppc64 (5009 Mhz)

MEMORY: 4 GB

PID: 30510

COMMAND: "crash"

TASK: c00000006ddbe460 [THREAD_INFO: c000000073268000]

CPU: 0

STATE: TASK_RUNNING (ACTIVE)

crash>

KERNEL: 系统崩溃时运行的 kernel 文件

DUMPFILE: 内核转储文件

CPUS: 所在机器的 CPU 数量

DATE: 系统崩溃的时间

TASKS: 系统崩溃时内存中的任务数

NODENAME: 崩溃的系统主机名

RELEASE: 和 VERSION: 内核版本号

MACHINE: CPU 架构

MEMORY: 崩溃主机的物理内存

PANIC: 崩溃类型,常见的崩溃类型包括:

SysRq (System Request):通过魔法组合键导致的系统崩溃,通常是测试使用。通过echo c > /proc/sysrq-trigger,就可以触发系统崩溃。

oops:可以看成是内核级的 Segmentation Fault。应用程序如果进行了非法内存访问或执行了非法指令,会得到 Segfault 信号,一般行为是 coredump,应用程序也可以自己截获 Segfault 信号,自行处理。如果内核自己犯了这样的错误,则会弹出oops 信息。

回页首

crash 内置命令简介

crash 命令行启动后,可以通过一些内置命令来打印系统崩溃前的信息。

bt - backtrace

bt 命令用于查看系统崩溃前的堆栈等信息,这是系统调试中非常常用和好用的一个命令。

清单 2. bt 命令结果

crash> bt

PID: 2860 TASK: c0000000677e9550 CPU: 0 COMMAND: "bash"

R0: 0000000000000001 R1: c0000000018978b0 R2:

c00000000061c460

R3: c000000001897920 R4: 0000000000000000 R5: 0000000000000000

R6: 0000000000019e07 R7: 0000000000000000 R8:

000000000a000000

R9: c000000072938d80 R10: c0000000006b5d58 R11:

c000000000740178

R12: 0000000000000000 R13: c00000000054ea80 R14:

00000000100d0000

R15: 0000000000000000 R16: 00000000100e2ab8 R17:

00000000100b0000

R18: 00000000100d0000 R19: 00000000100d0000 R20: 0000000000000000

R21: 0000000000000000 R22: 00000000100e8a28 R23: 0000000000000000

R24: 8000000000009032 R25: 0000000000000000 R26: 0000000000000000

R27: 0000000000000063 R28: 0000000000000006 R29: 0000000000000000

R30: c00000000058bfe8 R31: c0000000005a5ed0

NIP: c00000000009d9b0 MSR: 8000000000001032 OR3:

c000000001897ab0

CTR: c00000000028b6ec LR: c00000000028b708 XER: 0000000000000005

CCR: 0000000000000006 MQ: 0000000000000000 DAR:

c0000000005a5ed0

DSISR: c000000001897b10 Syscall Result: 0000000000000000

NIP [c00000000009d9b0] .crash_kexec

LR [c00000000028b708] .sysrq_handle_crashdump

#0 [c0000000018978b0] .crash_kexec at c00000000009d9e0

#1 [c000000001897a90] .sysrq_handle_crashdump at c00000000028b708 #2 [c000000001897b10] .__handle_sysrq at c00000000028b1fc

#3 [c000000001897bc0] .write_sysrq_trigger at c00000000015eadc

#4 [c000000001897c50] .proc_reg_write at c000000000156670

#5 [c000000001897cf0] .vfs_write at c0000000000fd490

#6 [c000000001897d90] .sys_write at c0000000000fdc00

#7 [c000000001897e30] syscall_exit at c0000000000086a4

syscall [c00] exception frame:

R0: 0000000000000004 R1: 00000000ffb6f820 R2:

00000000f7fe95c0

R3: 0000000000000001 R4: 00000000f7d70000 R5: 0000000000000002

R6: 0000000000000001 R7: ffffffffffffffff R8: 0000000000000000

R9: 0000000000000000 R10: 0000000000000000 R11: 0000000000000000

R12: 0000000000000000 R13: 00000000100dc8e8 R14:

00000000100d0000

R15: 0000000000000000 R16: 00000000100e2ab8 R17:

00000000100b0000

R18: 00000000100d0000 R19: 00000000100d0000 R20: 0000000000000000

R21: 0000000000000000 R22: 00000000100e8a28 R23: 0000000000000000

R24: 0000000000000001 R25: 00000000100e9718 R26: 0000000000000000

R27: 0000000000000002 R28: 000000000ff703f8 R29:

00000000f7d70000

R30: 000000000ff6fff4 R31: 0000000000000002

NIP: 000000000fec0988 MSR: 000000000000d032 OR3: 0000000000000001

CTR: 000000000fe59270 LR: 000000000fe592dc XER: 0000000000000000

CCR: 0000000040242442 MQ: 00000000010b6c30 DAR:

00000000f7d70000

DSISR: 0000000042000000 Syscall Result: 0000000000000000

crash>

如上输出中,以“# 数字”开头的行为调用堆栈,即系统崩溃前内核依次调用的一系

列函数,通过这个可以迅速推断内核在何处崩溃。

log - dump system message buffer

log 命令可以打印系统消息缓冲区,从而可能找到系统崩溃的线索。log 命令的截

图如下(为节省篇幅,已将部分行省略):

清单 3. log 命令结果

crash> log

Crash kernel location must be 0x2000000

Using pSeries machine description

Page orders: linear mapping = 24, virtual = 16, io = 12

Found initrd at 0xc000000001500000:0xc000000001c90400

Partition configured for 2 cpus.

Starting Linux PPC64 #1 SMP Tue Jan 24 20:12:50 EST 2012

-----------------------------------------------------

ppc64_pft_size = 0x19

physicalMemorySize = 0x80000000

ppc64_caches.dcache_line_size = 0x80

ppc64_caches.icache_line_size = 0x80

htab_address = 0x0000000000000000

htab_hash_mask = 0x3ffff

-----------------------------------------------------

Linux version 2.6.18-307.el5 (mockbuild@https://www.360docs.net/doc/bc15914910.html,) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-50)) #1 SMP Tue Jan 24

20:12:50 EST 2012

[boot]0012 Setup Arch

Node 0 Memory: 0x0-0x80000000

ps - display process status information

ps 命令用于显示进程的状态,(如图)带 > 标识代表是活跃的进程。ps 命令的截

图如下(省略部分行):

清单 4. ps 命令结果

crash> ps

PID PPID CPU TASK ST %MEM VSZ RSS COMM

0 0 0 c00000000054e190 RU 0.0 0 0 [swapper]

0 1 1 c00000007ff15150 RU 0.0 0 0 [swapper]

1 0 1 c00000007ff15960 IN 0.1 467

2 2688 init

2 1 0 c00000007ff14940 IN 0.0 0 0

[migration/0]

3 1 0 c00000007ff14130 IN 0.0 0 0

[ksoftirqd/0]

4 1 0 c00000007ff13920 IN 0.0 0 0

[watchdog/0]

5 1 1 c00000007ff13110 IN 0.0 0 0

[migration/1]

6 1 1 c00000007ff12900 IN 0.0 0 0

[ksoftirqd/1]

7 1 1 c00000007ff120f0 IN 0.0 0 0

[watchdog/1]

8 1 0 c00000007ff118e0 IN 0.0 0 0

[events/0]

9 1 1 c00000007ff1ba20 IN 0.0 0 0

[events/1]

10 1 1 c00000007ff110d0 IN 0.0 0 0 [khelper] 139 1 0 c0000000015822f0 IN 0.0 0 0 [kthread] 143 139 0 c000000001c6eb00 IN 0.0 0 0

[kblockd/0]

144 139 1 c000000001580ac0 IN 0.0 0 0

[kblockd/1]

145 139 0 c000000001c6f310 IN 0.0 0 0

[cqueue/0]

146 139 1 c0000000015802b0 IN 0.0 0 0

[cqueue/1]

150 139 0 c00000007ff1e270 IN 0.0 0 0 [khubd]

152 139 0 c00000007ff1ea80 IN 0.0 0 0 [kseriod] 169 1 1 c000000001c62170 IN 0.0 0 0 [rtasd]

209 139 0 c00000007f4ca370 IN 0.0 0 0 [khungtaskd]

> 1771 1 1 c000000001c36a80 RU 0.1 4096 2240 syslogd dis - disassembling instruction

dis 命令用于对给定地址的内容进行反汇编。dis 命令的截图如下:

清单 5. dis 命令结果

crash> dis -l c000000000255900

/usr/src/debug/kernel-ppc64-3.0.8/linux-3.0/fs/proc/mmu.c: 47

0xc000000000255900 <.get_vmalloc_info+112>: ld r10,8(r11)

5.5 struct – view data struct

struct 命令用于查看数据结构的定义原型。命令截图如下:

crash> struct -o vm_struct

struct vm_struct {

[0] struct vm_struct *next;

[8] void *addr;

[16] long unsigned int size;

[24] long unsigned int flags;

[32] struct page **pages;

[40] unsigned int nr_pages;

[48] phys_addr_t phys_addr;

[56] void *caller;

}

SIZE: 64

回页首

精彩案例

如前文所述,当 linux 系统内核发生崩溃的时候,可以通过 kdump 等方式收集内核崩溃之前的内存,生成一个转储文件 vmcore。内核开发者通过分析该 vmcore 文件就可以诊断出内核崩溃的原因,从而进行操作系统的代码改进。那么 crash 就是一个被广泛使用的内核崩溃转储文件分析工具,掌握 crash 的使用技巧,对于定位问题有着十分重要的作用。

这里采用笔者在实际测试工作中发现的 SLES 系统下的系统崩溃问题作为案例来进行讲解。该系统已经配置了 kdump 启用,因此在系统发生崩溃之后,在 /var/crash/ 当天日期 / 目录下面生成一个 vmcore 文件,下面我们来对这个文件进行分析。

1. 首先启动 crash

清单 6. 启动 crash

# crash vmlinux-3.0.8-0.11-ppc64 vmcore

crash 5.1.9

Copyright (C) 2002-2011 Red Hat, Inc.

Copyright (C) 2004, 2005, 2006 IBM Corporation

Copyright (C) 1999-2006 Hewlett-Packard Co

Copyright (C) 2005, 2006 Fujitsu Limited

Copyright (C) 2006, 2007 VA Linux Systems Japan K.K.

Copyright (C) 2005 NEC Corporation

Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc.

Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc.

This program is free software, covered by the GNU General Public License,

and you are welcome to change it and/or distribute copies of it under certain conditions. Enter "help copying" to see the conditions.

This program has absolutely no warranty. Enter "help warranty" for details.

GNU gdb (GDB) 7.0

Copyright (C) 2009 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law. Type "show copying"

and "show warranty" for details.

This GDB was configured as "powerpc64-unknown-linux-gnu"...

KERNEL: vmlinux-3.0.8-0.11-ppc64

DUMPFILE: vmcore

CPUS: 40

DATE: Wed Nov 16 20:17:11 2011

UPTIME: 10:37:23

LOAD AVERAGE: 60.00, 60.00, 60.00

TASKS: 811

NODENAME: eellp1

RELEASE: 3.0.8-0.11-ppc64

VERSION: #1 SMP Thu Nov 10 16:28:46 UTC 2011 (3cea58b)

MACHINE: ppc64 (3550 Mhz)

MEMORY: 4 GB

PANIC: "Oops: Kernel access of bad area, sig: 11 [#1]" (check log for details)

PID: 5563

COMMAND: "sh"

TASK: c0000000faac3700 [THREAD_INFO: c0000000f8ce0000]

CPU: 36

STATE: TASK_RUNNING (PANIC)

crash>

可以看到内核版本是 3.0.8-0.11-ppc64,这是一个 sles11sp2 的开发版本。

2. 接下来,我们用 bt 命令来看一下堆栈

清单 7. bt 命令

crash> bt

PID: 5563 TASK: c0000000faac3700 CPU: 36 COMMAND: "sh"

#0 [c0000000f8ce31b0] .crash_kexec at c0000000001039f8

#1 [c0000000f8ce33b0] .die at c000000000020158

#2 [c0000000f8ce3450] .bad_page_fault at c000000000045004

#3 [c0000000f8ce34d0] handle_page_fault at c000000000005ec8

Data Access error [300] exception frame:

R0: 0000000000130000 R1: c0000000f8ce37c0 R2:

c000000000f876d8

R3: c000000001224dc8 R4: 0000000000000001 R5: 0000000000000000

R6: cfffffffffffffff R7: 0000000002220000 R8:

2ffffffff1f10000

R9: d0*******e0f0000 R10: 0000000000000000 R11: 0000000100000000

R12: 0000000082002424 R13: c000000001f06c00 R14:

000000001003e270

R15: 0000000000000001 R16: 0000000000000001 R17: 0000000000000000

R18: 0000000000000000 R19: c0000000f820b4b8 R20:

c0000000f8ce3df8

R21: c000000000fe2400 R22: 00000fffb53d0000 R23:

fffffffffffff000

R24: 0000000000000400 R25: 000000000000ed99 R26: 0000000000002000

R27: 0000000000002e58 R28: c000000001224dc8 R29:

c000000001224dc0

R30: c000000000ef2658 R31: c0000000f8ce39a0

NIP: c000000000255900 MSR: 8000000000009032 OR3:

c000000000005278

CTR: c000000000263a08 LR: c0000000002558dc XER: 0000000000000001

CCR: 0000000022002444 MQ: 0000000000000001 DAR: 0000000100000008

DSISR: 0000000040000000 Syscall Result: 0000000000000000

.....

#4 [c0000000f8ce37c0] .get_vmalloc_info at c000000000255900

[Link Register ] [c0000000f8ce37c0] .get_vmalloc_info at

c0000000002558dc (un

reliable)

#5 [c0000000f8ce3850] .meminfo_proc_show at c000000000263ad8

#6 [c0000000f8ce3b40] .seq_read at c00000000020aa44

#7 [c0000000f8ce3c30] .proc_reg_read at c000000000258ccc

#8 [c0000000f8ce3ce0] .vfs_read at c0000000001dee60

#9 [c0000000f8ce3d80] .sys_read at c0000000001df06c

#10 [c0000000f8ce3e30] syscall_exit at c0000000000097ec

syscall [c01] exception frame:

R0: 0000000000000003 R1: 00000ffff3cceb60 R2:

00000fffb5305c40

R3: 0000000000000008 R4: 00000fffb53d0000 R5: 0000000000000400

R6: 0000000000000001 R7: 00000fffb5249f88 R8:

800000000200f032

R9: 0000000000000000 R10: 0000000000000000 R11: 0000000000000000

R12: 0000000000000000 R13: 00000fffb50b8110

NIP: 00000fffb523d0c4 MSR: 800000000200f032 OR3: 0000000000000008

CTR: 00000fffb51dae70 LR: 00000fffb51daeac XER: 0000000000000001

CCR: 0000000044002422 MQ: 0000000000000001 DAR:

00000fffb51dcd60

DSISR: 0000000040000000 Syscall Result: 00000fffb53d0000

Crash>

3. 我们看到系统崩溃前的最后一个调用是“#4 [c0000000f8ce37c0] .get_vmalloc_info at c000000000255900”,现在用 dis 命令来看一下该地址的反汇编结果

清单 8. dis 命令

crash> dis -l c000000000255900

/usr/src/debug/kernel-ppc64-3.0.8/linux-3.0/fs/proc/mmu.c: 47

0xc000000000255900 <.get_vmalloc_info+112>: ld r10,8(r11) 4. 从上面的反汇编结果中,我们看到问题出在 mmu.c 第 47 行代码,翻开 linux 源码的相应位置

清单 9. linux 源码

21 void get_vmalloc_info(struct vmalloc_info *vmi)

22 {

23 struct vm_struct *vma;

……

46 for (vma = vmlist; vma; vma = vma->next) {

47 unsigned long addr = (unsigned long) vma-

>addr;

用 struct 命令查看数据结构

清单 10. struct 命令

crash> struct -o vm_struct

struct vm_struct {

[0] struct vm_struct *next;

[8] void *addr;

[16] long unsigned int size;

[24] long unsigned int flags;

[32] struct page **pages;

[40] unsigned int nr_pages;

[48] phys_addr_t phys_addr;

[56] void *caller;

}

SIZE: 64

crash>

对照源码和反汇编代码,我们发现第 47 行的源码,实际对应的就是反汇编的代码

ld r10,8(r11) # 将寄存器 r11 的第 8 个 byte 后的内容,load 到寄存器 r10

5. 那么 r11 中应该是 vm_struct 结构,我们再用 struct 来看看

清单 11. struct 命令

crash> struct vm_struct 0000000100000000

struct: invalid kernel virtual address: 0000000100000000

crash>

说明 r11 的内容已经被破坏,并不是指向一个 vm_struct 结构了。

经过上面的层层分析,我们推测问题的产生过程如下:mmu.c 第 46 行, vma = vma->next 取到了一个错误的地址,导致第 47 行 addr = (unsigned long) vma->addr 产生了内核错误。当然,更深层的原因,还需要对代码逻辑进行分析,找出导致这个现象的根源。

回页首

常见问题

本节列出了使用 crash 过程中可能会碰到的问题,并给出了相应的解决对策。

1. 缺少调试信息包

清单 12. 缺少调试信息包

[root@bondlp1 2012-02-02-01:37]# crash

crash 5.1.8-1.el5

Copyright (C) 2002-2011 Red Hat, Inc.

Copyright (C) 2004, 2005, 2006 IBM Corporation

Copyright (C) 1999-2006 Hewlett-Packard Co

Copyright (C) 2005, 2006 Fujitsu Limited

Copyright (C) 2006, 2007 VA Linux Systems Japan K.K.

Copyright (C) 2005 NEC Corporation

Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc.

Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc.

This program is free software, covered by the GNU General Public License,

and you are welcome to change it and/or distribute copies of it under certain conditions. Enter "help copying" to see the conditions.

This program has absolutely no warranty. Enter "help warranty" for details.

crash: /boot/vmlinuz-2.6.18-307.el5: no debugging data available

crash: vmlinuz-2.6.18-307.el5.debug: debuginfo file not found

crash: either install the appropriate kernel debuginfo package, or

copy vmlinuz-2.6.18-307.el5.debug to this machine

遇到这种问题时,需要安装内核调试信息包,再重新运行 crash 命令。

2. vmlinux 和 vmcore 版本不匹配

清单 13. vmlinux 和 vmcore 版本不匹配

[root@bondlp1 2012-02-02-01:37]# crash

/usr/lib/debug/lib/modules/2.6.18-305.el5/vmlinux vmcore

crash 5.1.8-1.el5

Copyright (C) 2002-2011 Red Hat, Inc.

Copyright (C) 2004, 2005, 2006 IBM Corporation

Copyright (C) 1999-2006 Hewlett-Packard Co

Copyright (C) 2005, 2006 Fujitsu Limited

Copyright (C) 2006, 2007 VA Linux Systems Japan K.K.

Copyright (C) 2005 NEC Corporation

Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc.

Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc.

This program is free software, covered by the GNU General Public License,

and you are welcome to change it and/or distribute copies of it under certain conditions. Enter "help copying" to see the conditions.

This program has absolutely no warranty. Enter "help warranty" for details.

GNU gdb (GDB) 7.0

Copyright (C) 2009 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law. Type "show copying"

and "show warranty" for details.

This GDB was configured as "powerpc64-unknown-linux-gnu"...

WARNING: kernel version inconsistency between vmlinux and dumpfile

please wait... (gathering module symbol data)

WARNING: cannot access vmalloc'd module memory

crash: invalid kernel virtual address: 8000000000b663c8 type: "runqueues entry (per_cpu)"

这种情况说明你所使用的 vmlinux 与产生 vmcore 的内核版本不一致,需要使用相同版本的内核来调试 vmcore 文件。

3. core 文件不完整

清单 14. core 文件不完整

[root@bondlp1 2012-02-02-01:37]# crash

/usr/lib/debug/lib/modules/2.6.18-305.el5/vmlinux vmcore

crash 5.1.8-1.el5

Copyright (C) 2002-2011 Red Hat, Inc.

Copyright (C) 2004, 2005, 2006 IBM Corporation

Copyright (C) 1999-2006 Hewlett-Packard Co

Copyright (C) 2005, 2006 Fujitsu Limited

Copyright (C) 2006, 2007 VA Linux Systems Japan K.K.

Copyright (C) 2005 NEC Corporation

Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc.

Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc.

This program is free software, covered by the GNU General Public License,

and you are welcome to change it and/or distribute copies of it under certain conditions. Enter "help copying" to see the conditions.

This program has absolutely no warranty. Enter "help warranty" for details.

WARNING: vmcore: may be truncated or incomplete

PT_LOAD p_offset: 1610681124

p_filesz: 234881024

bytes required: 1845562148

dumpfile size: 1638400000

这个提示说明你使用的 vmcore 文件不完整。导致这个问题的原因可能有多种,硬盘空间不足,网络 dump 时网络中断等等。对于这种情况,我们需要重新 dump 一个完整的 vmcore 进行分析调试。

19款最好用的免费数据挖掘工具大汇总

数据在当今世界意味着金钱。随着向基于app的世界的过渡,数据呈指数增长。然而,大多数数据是非结构化的,因此需要一个过程和方法从数据中提取有用的信息,并将其转换为可理解的和可用的形式。 数据挖掘或“数据库中的知识发现”是通过人工智能、机器学习、统计和数据库系统发现大数据集中的模式的过程。 免费的数据挖掘工具包括从完整的模型开发环境如Knime和Orange,到各种用Java、c++编写的库,最常见的是Python。数据挖掘中通常涉及到四种任务: 分类:将熟悉的结构概括为新数据的任务 聚类:在数据中以某种方式查找组和结构的任务,而不需要在数据中使用已注意的结构。 关联规则学习:查找变量之间的关系 回归:旨在找到一个函数,用最小的错误来模拟数据。 下面列出了用于数据挖掘的免费软件工具 数据挖掘工具 1.Rapid Miner

Rapid Miner,原名YALE又一个学习环境,是一个用于机器学习和数据挖掘实验的环境,用 于研究和实际的数据挖掘任务。毫无疑问,这是世界领先的数据挖掘开源系统。该工具以Java编程语言编写,通过基于模板的框架提供高级分析。 它使得实验可以由大量的可任意嵌套的操作符组成,这些操作符在xmxxxxl文件中是详细的,并且是由快速的Miner的图形用户界面完成的。最好的是用户不需要编写代码。它已经有许 多模板和其他工具,让我们可以轻松地分析数据。 2. IBM SPSS Modeler

IBM SPSS Modeler工具工作台最适合处理文本分析等大型项目,其可视化界面非常有价值。它允许您在不编程的情况下生成各种数据挖掘算法。它也可以用于异常检测、贝叶斯网络、CARMA、Cox回归以及使用多层感知器进行反向传播学习的基本神经网络。 3.Oracle Data Mining

DOS运行命令管理器字符大全

DOS运行命令管理器字符大全 Nslookup-------IP地址侦测器 explorer-------打开资源管理器 devmgmt.msc--- 设备管理器 progman--------程序管理器 taskmgr-----任务管理器(2000/xp/2003 )ntmsmgr.msc----移动存储管理器 eventvwr-------事件查看器 sysedit--------系统配置编辑器 regedt32-------注册表编辑器 sfc.exe--------系统文件检查器 Clipbrd--------剪贴板查看器 utilman--------辅助工具管理器 fsmgmt.msc-----共享文件夹管理器 odbcad32-------ODBC数据源管理器eventvwr.msc 时间查看器 DOS运行命令程序字符大全diskmgmt.msc---磁盘管理实用程序 dfrg.msc-------磁盘碎片整理程序perfmon.msc----计算机性能监测程序

wupdmgr--------windows更新程序 eudcedit-------造字程序 packager-------对象包装程序 perfmon.msc----计算机性能监测程序 Sndvol32-------音量控制程序 sigverif-------文件签名验证程序 tourstart------xp简介(安装完成后出现的漫游xp程序)certmgr.msc----证书管理实用程序 cliconfg-------SQL SERVER 客户端网络实用程序ciadv.msc------索引服务程序 magnify--------放大镜实用程序 DOS运行命令服务字符大全 dcomcnfg-------打开系统组件服务 services.msc---本地服务设置 net start messenger----开始信使服务 net stop messenger-----停止信使服务 DOS运行命令的基本操作字符 lusrmgr.msc----本机用户和组 mmc------------打开控制台

暴力破解代码

暴力破解代码 程序源代码: package cn.keona.check; import java.io.File; import java.io.FileReader; import java.io.BufferedReader; import java.io.IOException; import java.io.FileNotFoundException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.List; import java.util.ArrayList; import java.text.MessageFormat; /** * 破解工具类 */ public class CheckSQLPasswordUtil { //SQL-Server2000驱动. private static final String DBDRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; //数据库连接URL. private static final String DBURL = "jdbc:microsoft:sqlserver://{0}:1433;databasename=master"; //远程数据库路径. private String databaseUrl; //需要破解的数据用户. private String dbUser; //密码文件路径. private String passwordPath; //密码集合. private List passwords = new ArrayList(); //是否破解密码. private boolean isCheck; //正确密码. private String truePassword; //带参数构造方法. public CheckSQLPasswordUtil(String databaseUrl,String dbUser,String passwordPath) { this.databaseUrl = databaseUrl; this.dbUser = dbUser; this.passwordPath = passwordPath;

钻头钻柱及井口工具

钻头、钻柱及井口工具 第一节刮刀钻头 (1) 第二节牙轮钻头 (2) 第三节金刚石钻头 (9) 第四节 PDC 钻头 (12) 第五节钻柱及其受力情况 (16) 第六节钻柱的损坏及合理使用 (17) 第七节井口工具 (19) 钻头是破碎岩石形成井眼的主要工具,可根据其结构、功用及原理进行分类,现场常用的钻头有刮刀钻头、牙轮钻头、金刚石钻头、PDC钻头等。 第一节刮刀钻头 刮刀钻头是旋转钻井法中最早使用的钻头,它的结构简单,制造方便,在泥岩、疏松的砂岩、泥质砂岩、页岩等低硬度、高塑性地层中钻进,可得到较高的机械钻速和钻头进尺,并且各油田均能自己设计和制造。刮刀钻头按刀片的数量不同可分为两翼刮刀钻头、三翼刮刀钻头、四翼刮刀钻头等。最常用的是三翼刮刀钻头。由于刮刀钻头需要扭拒大,容易扭断钻具目前已经很少使用。

2、 巴掌 第二节牙轮钻头 牙轮钻头是石油钻井中使用最广泛的钻头。这是由于牙轮钻头旋转时具有冲 击、压碎 和剪切破碎岩石的作用,牙齿与井底的接触面积小,比压高、工作扭矩 小、工作刃总长度大等。因而使牙轮钻头能适用于多种性质的岩石,成为使用最 广泛的钻头。 牙轮钻头可按牙轮数目的多少分为单牙轮钻头, 双牙轮钻头、三牙轮钻头和 多牙轮 钻头等。目前普遍使用的是三牙轮钻头。 、三牙轮钻头的结构 三牙轮钻头可分为五个部分,即钻头体、巴掌、牙轮、轴承和水眼。密封喷 射式钻头 除上述基本部分外,还有储油补偿系统。 1、钻头体 钻头体上部车有丝扣用于连接钻柱,下部带有巴掌。钻头体上镶装喷嘴。牙 轮钻头可 分为有体式和无体式两类。 钻头体与巴掌分别制造,然后将巴掌焊接在 钻头体下侧的叫做有体式钻头,这种钻头的上部丝扣均为母扣;巴掌与三分之一 钻头体做为一体,然后将三部分合焊在一起的叫做无体式钻头, 无体式钻头均为 公扣。 巴掌与牙轮轴相连,上面有轴颈,用于支承牙轮。 3?牙轮 牙轮是一个外面带有牙齿,内腔加工成与轴颈相对应的滚动体跑道 (或滑动 磨擦面)的锥体,分单锥与复锥两种结构,如图 5-5所示。仅有主锥和背锥两个 不同锥度的牙轮叫单锥牙轮,适用于硬或研磨性较强的地层;除主、 背锥外还有 1?2个副锥的牙轮叫复锥牙轮,适用于软或中硬地层。牙轮表面的牙齿,由牙 齿毛胚铣削加工或钻孔镶嵌两种方式制成。牙齿是钻头破岩的主要元件。由牙轮 毛胚铣削加工而成的牙齿叫铣齿, 这种钻头叫铣齿钻头。将金属材料加工成一定 形状的牙齿,镶嵌并固定在轮壳上的钻头叫镶齿钻头。 ] 4、轴承 牙轮钻头的轴承结构有滚动轴承和滑动轴承两种。 目前广泛采用大轴承滑动 副一滚珠轴承一第二道止推一小轴滑动副的滑动密封轴承结构。其类型有四种: (1) 普通滑动轴承,目前国产镶齿密封滑动轴承喷射钻头,大多采用这种 类型的结构; (2) 带固定衬套的滑动轴承; 三■半底三止阶栩 三反阶 图5—2刀真図畀略狀

如何快速打开任务管理器

如何快速打开任务管理器 篇一:win7下如何快速打开运行菜单 win7下如何快速打开运行菜单 Windows“开始”菜单中的“运行”是通向应用程序的快捷途径,输入特定的命令后,即可快速的打开Windows的大部分程序。在Windows 7时代,快速熟练的运行命令,将给计算机的操作带来很多便捷,从而提升使用Windows进行操作的效率。 打开运行窗口最快的方法就是按下“Win+R”的组合键 在Windows 7中,也可以通过“开始”菜单,利用“搜索程序和文件”框输入命令,可以自动查找到相应程序。如果打开如以往系统的“运行”框,可以单击“开始”右键,选择属性,在“自定义”中打开“运行命令”。 在Windows 7中手动打开运行框 注意:以下功能在正版Windows 7各个版本中可以正常使用。非正版软件打着缩小系统体积的幌子,擅自关闭或者删除了很多正常服务,由此带来正常命令不能使用,并带来严重安全隐患。所以,推荐使用正版Windows 7。 explorer 打开资源管理器 系统配置实用程序 注册表

taskmgr 任务管理器 cmd命令提示符 Nslookup IP 地址侦测器 Odbcad32 ODBC数据源管理器 计算机管理 本机用户和组 打开Windows管理体系结构(wmi) calc 启动计算器 wscript Windows脚本宿主设置 wiaacmgr 扫描仪和照相机向导 mmc 打开控制台 mobsync 同步命令 dxdiag 检查directx信息

设备管理器 磁盘管理实用程序 dcomcnfg 打开系统组件服务 net stop messenger 停止信使服务net start messenger 开始信使服务notepad 打开记事 narrator 屏幕“讲述人” netstat -an (tc)命令检查接口 sysedit 系统配置编辑器 sigverif 文件签名验证程序 shrpubw 创建共享文件夹 本地安全策略 本地服务设置 系统文件检查器 eventvwr

暴力破解密码C语言

#include"stdio.h" #include"time.h" #include"stdlib.h" #include"malloc.h" #include"string.h" int main() { char a[10],b[]={"000000"},c[]={"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTU VWXYZ"}; int d[6]; clock_t start,finish; double TheTimes; do { printf("请输入六位密码:"); gets(a); if(a[6]=='\0') { break; } printf("ERROR\n" ); } while(1); start=clock(); while(1) { for(d[5]=0;d[5]<64;d[5]++) { b[5]=c[d[5]]; for(d[4]=0;d[4]<64;d[4]++) { b[4]=c[d[4]]; for(d[3]=0;d[3]<64;d[3]++) { b[3]=c[d[3]]; for(d[2]=0;d[2]<64;d[2]++) { b[2]=c[d[2]]; for(d[1]=0;d[1]<64;d[1]++) { b[1]=c[d[1]]; for(d[0]=0;d[0]<64;d[0]++)

{ b[0]=c[d[0]]; if(strcmp(a,b)==0) { printf("破解密码得:"); puts(b); finish=clock(); TheTimes=(double)((finish-start)/CLOCKS_PER_SEC); printf("用时%f秒。\n",TheTimes); return(0); } } } } } } } } return(0); }

(整理)oracle常用管理工具 (2).

Oracle常用管理工具简介 了解常用Oracle 9i常用管理工具的使用方法 掌握oracle database configuration assistant的使用 掌握SOL*Plus的使用 掌握SQL,PlusWorkSheet的使用 掌握Oracle Enterprise Manager(OEA)的使用 3.1Oracle基本管理工具的种类 Oracle基本管理工具主要有: (1)OUI(Oracle Universal Installer)。图形化用户界面安装向导工具,可实现Oracle9i各种组件与套件的安装和卸载,是最常用的Oracle安装工具(2)DBCA(Oracle Database Configuration Assistant)。图形化用户界面的数据库配置管理工具。利用该工具可以创建数据库、配置数据库以及删除数据库。DBCA的最大特点之一就是Oracle在DBCA中设置了多种数据库模板,DBA可以选择不同的模板快速创建适用于不同应用的数据库 (3)SQL *Plus和SQL *PlusWorkSheep,为DBA、开发人员和用户提供一个执行SQL命令的运行环境,是数据库管理和访问的常用工具 (4)OEM(Oracle EnterPrise manager)。高度集成的图形化用户界面管理工具集。主要由Oracle管理服务器(Oracle Manager Server)、Oracle智能代理(Oracle Intelligent Agent)和控制台(Console)三部份组成。DBA利用该工具实现数据库备份、数据库对象的创建、删除和修改等操作,还可以实现数据库监测、性能诊断、作业调度和事件管理等操作,是数据库管理的主要工具 3.2利用DBCA创建数据库 一.创建数据库的方法 使用数据库配置管理工具创建数据库 使用SQL命令创建数据库 1.使用数据库配置管理工具创建数据库 在Oracle9i中创建数据库的方法有两种:一是编写SQL*Plus脚本并运行二是使用Oracle9i配置管理工具创建数据库 方法一虽有很大的灵活性,但他要求创建者对Oracle9i创建数据库的语法和参数有深入的了解,初学者一般选用第二种方法 例1使用DBCA创建ordb数据库 启动DBCA——下一步,进入数据库创建窗口(四种操作模式,协助进行不同的数据库管理工作)选中创建数据库——下一步,Oracle提供三种数据库预设模板文件:数据仓库(Data Warehouse)、事务处理(Trancation Processing)、通

全球10大开放源代码项目

全球10大开放源代码项目 下面是https://www.360docs.net/doc/bc15914910.html, 评选出的10大开放源代码项目。我打赌你们当中的绝大多数人对这些软件都并不陌生,也许曾经使用过,也许现在正在使用。噢,老天!请不要告诉我你从来都没有听说过这些软件,如果是这样的话,我强烈建议你马上下载其中的一些自己感兴趣的软件,感受一下开放源代码软件所具有的巨大魅力。感谢所有在这些开放源代码项目幕后默默奉献的人们。 不过在正式开始之前,让我们先了解一下有关与开放源代码运动的一些背景知识。 目录 ??背景知识 ??第10名:eMule ??第9名:Audacity ??第8名:知识共享协议 ??第7名:Ogg ??第6名:PHP ??第5名:Wiki ??第4名:Azureus ??第3名:https://www.360docs.net/doc/bc15914910.html, ??第2名:Linux ??第1名:Firefox ??后记:一些没有上榜,但依然值得一提的开源项目! 背景知识 一、什么是开放源代码(open source)? 开放源代码标识 开放源码软件(open source)是现在IT世界中最热门的词语之一。开放源代码促进会(Open Source Initiative,OSI)将其定义为“自身源代码可以被公众使用的软件;并且此软件的使用,修改和分发也不受许可证的限制”。 值得注意的是,开放源码软件通常是有版权(copyright)的。开放源码软件的许可证可能包含这样一些限制: 必须保护软件的开放源码状态;标明软件制作者的身份;或者对有关的开发行为进行限制。 开放源码软件主要被散布在全世界的数目庞大的软件开发者队伍所开发和维护,但是同时一些大学,政府机构承包商,协会和商业公司也开发它。开放源码软件在历史上曾经与UNIX,Internet联系的非常紧密。在这些系统中许多不同的硬件需要支持,而且源代码的分发是实现交叉平台可移植性的唯一实际可行的办法。 开放源代码(open source)不仅仅指开放源代码软件,它同时也是一种软件开放模式的名称。开放源代码开放模式的名字及其特点最早是由美国著名电脑黑客“埃里克·雷蒙(Eric Raymond)”在他的著作《大教堂与市集(The Cathedral and the Bazaar)》等一系列论文集中提

盘点最受程序员欢迎的个代码编辑器精编WORD版

盘点最受程序员欢迎的 个代码编辑器精编 W O R D版 IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】

盘点最受程序员欢迎的13个代码编辑器 编写代码本身就是一种艺术。如今,开发人员可以使用大量的编程语言,从非常基本的汇编语言到Ruby和Python。尽管对于一个给定的项目可供选择的编程语言很多,但有一件事情是不变的——每个开发人员都需要一个称心的代码编辑器! 一个好的代码编辑器不仅仅是一个简单的文本编辑工具,它可以将书写的代码转化为项目的可行组件。鉴于这一重要性,程序员对代码编辑器非常挑剔。每个程序员都需要一个快速的,易于使用的代码编辑器并提供正确的功能。 由于每个代码编辑器都声称是最好的,所以我们必须听取开发人员的建议。近日,WordPress开发人员对常用的代码编辑器进行了评分: 第一名:VIM Vim是WordPress开发人员中最流行的代码编辑器。它是免费的,在Linux开发人员中享有良好的声誉。该编辑器是开放源码并高度可配置的,它提供了跨平台兼容性。此外,它可以在Dos中工作。 Vim可能不会在新用户中受到欢迎,因为它具有一定的学习曲线。以下是Vim附加的部分功能: ·整合UI ·超过200种语言的语法突出显示 第二名:LightTable

LightTable是一个免费开放源代码的编辑器,可以在Kickstarter(一个众筹网站,如果用户认可可以提供部分资金)找到超过300k的资金。该编辑器有一个非常干净的界面,并有大量扩展。它与Windows、Mac和Linux都兼容,是高度可定制的。 使用LightTable,开发者只需打开一个浏览器窗口即可实时查看更改,并且支持不同的嵌入。 第三名:Chocolat Chocolat本身是MacOSX的最佳代码编辑器。该编辑器旨在与OS无缝集成,Chocolat 为JS、Python和HTML提供拖放功能、拆分编辑、代码折叠和代码完成。 其他一些功能是: ·广泛搜索和替换 ·错误检查 第四名:Notepad++ Notepad++有很好的理由成为许多WordPress开发人员的首选。这个轻量级的代码编辑器是开源的,可以自由使用。该编辑器最好的一点是,它是新手和专家的理想选择。 支持的语言列表包括WordPress开发人员在开发复杂项目过程中所需的一切。Notepad++的其他功能包括: ·重点语法突出

第三章井口工具解析

第三章井口工具 一、吊卡 1、用途 吊卡用于起下钻时,提升和下放钻具,(如:双吊卡起下钻),并使钻具坐于转盘上,钻进时用于接单根。 2、分类 有侧开双保险式、对开双保险式以及闭锁环式。我国钻井现场普遍使用CSD 群革式吊卡。主要由主体、活页、开口销、锁销手柄、平衡紧固螺钉、上下锁销等组成。 3、使用注意事项 ⑴吊卡规格与钻具尺寸相符、负荷台阶平整无严重变形、磨损,活页销、保险销滑润、活门扣合灵活、安全可靠。 ⑵起下钻或下套管时必须使用保险插销和小补心,坐吊卡时禁止猛顿猛砸,严禁崩扣操作。 ⑶禁止超负荷使用,禁止将绳套扣在吊卡内提拉重物。 ⑷吊卡坐转盘时应避开方瓦锁销并摆正,使其两端受力均匀。 4、吊卡的扣合与摘离 ⑴扣合钻具(或套管)时,先打开吊卡活门,再拉开吊卡使主体靠近钻具(或套管)。 ⑵关闭活门,上下锁销复位锁紧,然后试拉活门是否扣好。 ⑶摘开吊卡时,用手下压锁效手柄解锁,同时向外拉开活门,摘离钻具(或套管)即可。 二、吊钳

1、用途 吊钳分为外钳和内钳,工作时相互协作,主要用于起下钻、下套管作业时,上卸钻具丝扣及紧扣。 2、类型 按扣合钻具尺寸分:B型吊钳和套管吊钳;按操作方式分:手动吊钳和液压大钳。目前,国内现场普遍采用B型吊钳和液压大钳。B型吊钳扣合尺寸范围φ88.9~φ298.4mm,用更换钳头的方法可上卸不同尺寸的管子。 3、结构 主要由大钳销子、钳柄、吊杆、1#扣合器(钳框)、2#固定扣合器(双公)、3#长钳、4#短钳(双母)和5#扣合器等组成。 4、吊钳的检查 ⑴用钢丝刷将钳牙刷干净,钳牙上不能有油、泥。检查钳牙及上下挡销是否其全,其磨损量不能超过1.5mm,否则应更换。 ⑵检查吊钳的水平度。吊钳安装好后必须调平后才能使用,扭动吊杆上的转轴螺帽可调节吊钳的左右水平度,扭动吊杆下部的调节螺丝可调节吊钳的前后水平度。调好后不再乱动。 ⑶检查各扣合器的连接销是否为专用销,销子上下不能装反,背帽、挡销应齐全。各扣合器润滑良好,转动灵活。 ⑷猫头绳、钳尾绳在钳柄尾部必须固定可靠才能使用,钳尾绳不打结或严重断丝。 5、使用注意事项 ⑴应选择适当的5#钳头,以保证扣合尺寸与钻具尺寸相符。 ⑵吊钳应打在钻杆接头上,上下钳分别距接头密封面30~50mm,内、外钳

Windows 7 常用命令

最常用: gpupdate /force 重新运用所有策略设置 netsh winsock reset 重置winsock net user /domain xxx 查看用户名为:xxx的域帐号信息control keymgr.dll 凭据管理器 ipconfig ping tracert 一、控制面板程序命令(后缀.cpl) ncpa.cpl打开网络“本地连接” sysdm.cpl运行“系统属性”程序 desk.cpl打开“屏幕分辨率”对话框mmsys.cpl配置音频设备 main.cpl打开“鼠标属性”对话框appwiz.cpl打开“卸除或更改程序”对话框firewall.cpl打开“Windows防火墙”对话框inetcpl.cpl打开“Internet属性”对话框hdwwiz.cpl 打开设备管理器控制单元 igfxcpl.cpl intel图像媒体控制面板

intl.cpl 区域和语言 powercfg.cpl 电源选项 timedate.cpl 日期和时间 wscui.cpl 操作中心 二、管理控制台命令(后缀都.msc) wmi是Windows Management Instrumentation的缩写, mmc是Microsoft Management Console的缩写。 wmimgmt.msc或mmc,快速打开管理控制台窗口: 可以通管理控制台打每个控制单元,但是这校太麻烦,直接在运行对话框中输入相应的控制面板单元命令即可快速打开。 devmgmt.msc 打开设备管理器控制单元命令 wf.msc打开高级安全Windows 防火墙 diskmgmt.msc打开磁盘管理器 compmgmt.msc 打开计算机管理 lusrmgr.msc打开用户管理程序 fsmgmt.msc打开共享文件夹管理程序 taskschd.msc打开任务计划程序 services.msc打开服务管理程序 perfmon.msc打开性能监视器程序 gpedit.msc 本地组策略编辑器程序

当前流行源代码管理工具介绍

人们在软件开发的最初阶段,往往借助于电子表格、白板和发布工程师(Release Engineer,在软件开发过程中跟踪软件版本发布信息的软件工程师)在软件开发过程中进行协调工作。发布工程师往往需要从一个地方跑到另一个地方,来跟踪开发者在进行哪个模块的开发,以及哪些bug 修复、发现和引入。不用说,这个过程充满了问题和错误。因此,源代码控制管理系统(Source Control Management,SCM)应需而生。 源代码控制管理系统是为软件开发团队准备的一套软件,通过它可以实现团队成员之间的协作和服务。 从其可以实现的最基本的功能来说,SCM提供文本管理和版本控制功能,这样团队成员不会互相改写对方的修改,只有最新版的文件被标记为操作使用中。但这只是基本功能。源代码控制系统还让开发者可以同时操作同一个文件,合并其他开发者所做的修改,跟踪并审计要求和已做出的修改,跟踪漏洞修复状态和执行发布。 在某些情况下,源代码控制系统还可以包含其他组件,来帮助开发者管理一个软件的整个生命周期的过程。源代码控制系统和应用程序生命周期管理系统之间的区别实际是一个语义上的不同,反映了系统中提供的工具的完全性。 2007年春天,著名调查公司Evans Data公司调查了不同源代码控制系统的用户。这些用户被要求对他们使用的源代码控制系统进行打分,打分从“优秀”到“尚需改进”。只有那些真正用过这些产品的IT经理和开发者对它们进行打分,而且他们只对当前正在使用的工具进行打分。此外,用户还要求根据一些属性的重要性进行打分,从而得出一个真正的评价。 在对这些源代码控制系统进行调查的过程中,可以很清楚地看到,每一个产品都有自己的内容、自己的吸引人的地方和缺点。 来自专有公司的源代码管理系统

软件暴力破解的原理和破解经验

软件暴力破解的原理和破解经验 我想今天就向大家介绍一下关于暴力破解的知识和破解经验。这个当然也是我个人的经验,但是对于高手来说应还有其它方面的经验,如果你认为我的经验不足的话,希望能够来信补充一下。 现在就开始介绍暴力破解的原理。对于暴力破解通常是无法得到注册码或是注册码的运算过程太复杂,无法通常计算得到(这里指使用反推法来计算注册码)所以就能够使用修改程序的方法来破解这个软件,这样通常就是暴力破解。 现在将使用暴力破解的软件分一下类型,也好让大家来知道如何对不同的软件进行注册码破解还是暴力破解了。 1.测试版软件 这种软件是属于测试使用的,通常无法注册,这样它只有一个time bomb限制,对于破解它只能使用暴力破解方法了。只要将它的时间炸弹解除就行了。 2.共享软件中不需要注册码输入的形式 这种软件是比较成熟的软件,但是作者通常没有使用注册码保护软件,而是仅做一个time bomb,同上面的一样,所以破解就同上面相同了。 3.共享软件中注册码运算过程过于复杂情况 这样的软件是作者设计时使用了十分复杂的运算过程,你使用反推无法得到它的注册码,所以它也只能使用暴力破解才能使用这个软件。 4.共享软件的提示窗口 通常这种软件是在开始运行的时候有一个提示窗口,最为可气是有的软件提示窗口有一定的时间要求,你必要等10秒才能运行这个软件,所以通常破解它就使用暴力破解了。(这不包括破解出注册码的情况) 5.共享软件使用Key File保护的形式 对于这种软件来说,通常的解密人是比较难破解的,但是使用暴力破解就相当的轻松了,你只要找对地方就可以破解它了。 6.共享软件加壳处理 这种破解是属于暴力破解中最难的一种了,因为如果你没有脱壳知识的话,你将无法使用暴力破解来得到这个软件的破解过程。所以对于这种来说,一定好好学习脱壳知识才能对付这个破解。

互联网活动营销常用工具和方法

网络营销的常用工具和方法 首先我选择的商品是”500万像素数码相机”,分别使用该商品名作为关键词,在baidu google, zhongsou, sogou,四大常用搜索引擎进行搜索实验. 通过观察发现,在baidu 和google 两个搜索引擎中出现了两个企业同时对该产品做宣传,分别是在badu排第二,第三名,在google,排第一,二名,与其他搜索引擎搜索的结果发现,包括该商品介绍的文章在内均未出现相同的,我觉得这说明,在各个搜索引擎中都有属于自己的企业客户,但在baidu,google,出现相同企业,说明这两大搜索引擎在企业当中的认知度是很高的,在搜索引擎当中是比较有影响力的,另外,这两个企业在google,中脱颖而出,分列第一,二位,说明这两个企业,是比较具有实力而且在注重宣传方面投入的企业,但是在baidu确分列第二,三位,我们都知道baidu中各企业的位置是按竞价排名的,第一的位置,被其他的企业占据,说明,在baidu各企业的竞争中更为激烈,也显得比google,又更胜一筹. 在各企业特征描述的内容中,比较吸引我的是有一些夸张,美妙字眼的文字,或是打出一些特价的商品,如”跌疯了惠普500万像素数码相机仅1399元”及”领先时尚魅力500万像素卡西欧DC数码相机”我觉得,这些企业对产品产品的描述比较能抓住客户的心里,算是比较成功的宣传.当点击进入该页面这两种带给浏览者的方式是迥然不同的,一种是直接以整篇文章加图片的详细介绍方式,另一种是已展台的形式,列出多种性能相同或接近的商品布满整个屏幕,点击后进

入详细介绍,我个人比较喜欢后者,因为可以有更多的选择. 至于同一关键词在不同引擎种产生不同的效果,我觉得在上面的试验中己经很能说明问题,那就是由各个引擎在的影响力和在人们心里当中的认知度造成的,已形成了该行业的名牌效应,大量的企业宣传都集中在影响力大的搜索引擎中,忽略了一些认知度较低的搜索引擎,,各个搜索引擎都由属于自己的使用者,所以一些企业就丧失了少量的浏览者,不过能抓住的群体思路是对的,至于能否抓的全面,就要看企业实力和宣传的投入上了,我点击的页面均有对该商品的更详细介绍,而且十分吻合,我觉得这点非常重要,因为,因为当浏览者打开页面发现有和搜索引擎中介绍不吻合或不详细的地方,浏览者会立即关掉该页面,选择其他,因为浏览者在引擎中的选择是很多,不由得使我们得出结论,那就是企业网站和搜索引擎两者在传递网络营销信息要保证对对要宣传商品描述的精确性和真实性。 每个搜索引擎他们都有属于自己的客户,有的相同,更多的是不同的。各企业网站在BAIDU和GOOGLE里面的宣传力度是不相同的。CETTIC在四大搜索引擎中中分别排名第十名,第一名,第二名和第三名。说明CETTIC是比较具有实力而且在注重宣传方面投入的企业,但是在baidu排十位,我们都知道baidu中各企业的位置是按竞价排名的,前面的位置,被其他的企业占据,说明,在baidu各企业的竞争中非常激烈。各个引擎在的影响力和在人们心里当中的认知度,已形成了该行业的名牌效应,大量的企业宣传都集中在影响力大的搜索引擎中,忽略了一些认知度较低的搜索引擎,,各个搜索引擎都由属于自己

外文翻译-----使用开放源码工具的专业便携式开发

Professional Portal Development with Open Source Tools Design Pattern Considerations in Your PortalClearly, there are many ways to implement a design that cannot be expressed adequately in this chapteralone. Hopefully, the introduction of high-level pattern constructs and brief discussion of the implementationof Java standards in this chapter can facilitate your design decisions on your portal deployments. Java language and implementation standards can also help control complexity so that consistent levels ofquality can be attained in your development activities. This in turn can lead to increased partner adoptionand portlet maintenance. Last, the adoption of design patterns should be applied so that best practices arepropagated in your portal deployment and development operations can be hastened. Much has been written during the last few years about design patterns and their use in Java development,so rather than go into great elaboration of their use, we felt that it would be more beneficial to providehigh-level concepts of patterns that might be used in your portal deployments and to encourage you toexplore them from the online Javaworld newsletter and from the Core J2EE Patterns book [ALUR]. Planning for Portal Deployment Using Java Standards For many mission-critical development portal efforts, decisions need to be made about expensive softwareprocurements to satisfy your development needs. In order to protect this investment, it is wise toconsider standards when you make your purchasing decision because there is nothing worse thandumping a lot of money into a particular framework only to learn after you have obtained it that it is aclosed, proprietary system that does not work well with other systems. To guarantee that this does nothappen to you, you should become familiar with software standards and other application frameworks’use of them. Regrettably, systems that do rely heavily on proprietary extensions often force your projectto hire expensive expertise to help you deploy your program with their framework. Figure 7.21 illustrates some of the Java standards that could be considered for portal development. It isimportant to remember that these need to be established prior to procuring a portal framework or integratingexisting applications into a homegrown portal application. Always be cognizant of the latest versionsof the standards listed in Figure 7.21, and the effects that newer versions of those standards mighthave on your design decisions.

(整理)Linux管理员必须知道的五大命令和工具.

Linux管理员必须知道的五大命令和工具 对于Linux管理员来说,有很多非常有用的工具可供选择。在这里,我只是列举出其中5个,Linux管理员日常操作都要用到的工具。 对于Linux管理员来说,有很多非常有用的工具可供选择。在这里,我只是列举出其中5个,Linux管理员日常操作都要用到的工具。我认为,功能最强的工具可能并不适合你的使用情况,而且绝对有些工具我还忘了把它们统计进来,如果是这样的话,我恳请大家把我没收录的工具在评论中写出来。另外,本文中提到的工具仅供选择,并不是每个人都一定需要它们,而那些没提到的工具,并不是说Linux管理员就不需要使用,像SSH, SCP这样的工具,每个Linux管理员都必须使用并且没有其他选择。 #5. head/tail命令 大多数情况下,登录服务器的唯一目的是诊断某些问题,常规方法是查看日志。有各种不同应用类型的日志,比如Apache日志、MySQL日志、邮件日志等。那么你用什么命令来查看日志呢,难道不是tail吗?这其实与此类似,我们有时候可以使用“head”命令来查看一个文件的开始几行。 几个例子: *持续检查Apache错误日志文件,可以使用以下命令: $ tail -f /var/log/httpd/error_log *查看MySQL日志中的前15行内容,可以使用以下命令: $ head -15 /var/log/mysqld.log #4. vi/nano/emacs工具 一般而言,文本编辑器需要频繁地用来创建/更新配置文件。我更喜欢使用vim,使用起来非常舒服,很容易记住它的一些快速编辑命令。 下面是使用vi的几个例子。用vi打开一个文件,而且不进入插入模式(insert mode),那么你可以输入如下所示的有用字符: =>跳至行末 $ => 跳至行首

源码管理工具比较

源码管理工具,svn,cvs,hg,git,VSS 什么是源码管理工具 简单地说,源码管理工具是一种记录代码更改历史,可以无限回溯,用于代码管理,多个程序员开发协作的工具. 常见的功能有: 1.更新到任意一个版本(不用担心代码的修改错误,和丢失等) 2.日志记录(说明修改目的) 3.分支,标签(用于协作开发,和便于阶段性产品发布) 4.合并,比较(用于多人,多分支之间的代码合并,比对等) 为什么要使用源码管理工具 你可能会想,需求出来了,老大把我要做的功能告诉我,我去写代码就行,完事了,我再打包发给他让他加入到整个代码中,然后测试.有问题再反馈回来,我再修改,再打包.这样不是也挺好吗? 当然我要说,这样当然是可以的,但是如果你们要修改同一个文件怎么办?你们还得事先商量确定某个时间某个人不能修改等等.或者新建不同的名字的文件,最后由一个人来合并. 如果你的团队不是3,5个人,而是30,50人呢?你这样的沟通和重复性工作的成本会有多高? 于是聪明的程序员便有了版本控制的设想,继而有了源码管理工具的不断推陈出新. 如果你稍微开发过一个正式的项目,想必你对cvs,svn,hg,git这些也一定有所耳闻. 下面就简单根据我个人的一些项目经验来介绍下2类的源码管理工具. 源码管理工具介绍 简单地可以将源码管理工具分为两类:svn这样的集中式的,和hg这样的分布式的. 因为我个人对svn和hg比较熟悉,所以下面就以这二种具体的工具为代表来说明二者的优劣. 第一次接触源码管理工具就是svn,想着那时对于什么增量修改,历史记录等概念不清楚时,也曾在写了2小时的代码后,提交svn时失误而导致文件被删除的悲惨历史.惨痛的教训让我开始了系统地学习svn的过程,一天后,我明白了它的原理,这时会很晰明确地知道每个命令的结果,也会很清楚地知道自己怎样做才是最合适的. 简单总结一些best practice: Check in early,Check in often(这个是很重要的,尤其是多个开发的团队,这样可以大大减少冲突的可能) 发现冲突第一时间解决(不能将冲突留给你的同事,发现了第一时间解决,如果需要要向冲突的相关同事沟通交流) 只提交需要提交的文件(一些临时文件不要提交,不能污染整个代码库) 熟悉常用的命令,如add/rm/up/ci/co/stat/merge/diff等 大致一个月后,我逐渐明白一个源码管理工具对于一个项目的意义和作用.自此后,我去公司实习我会第一时间询问他们是否使用源码管理工具,使用哪种工具.而对于自己的一些业余项目,我也通常是使用google code来管理起来,甚至当前的这些博客的源码(不过最近已经迁移到了hg的一个hosting service下,原因请参考下文). 到了去年的晚些时候,开始知道了分布式源码管理工具,了解了它与集中式工具的区别和优

网络营销常用的工具

网络营销的工具和方法 ——————网络营销能力秀相关任务 网络营销能力秀官网—https://www.360docs.net/doc/bc15914910.html,/ 在现阶段的网络营销活动中,常用的网络营销工具包括企业网站、搜索引擎电子邮件、网络实名/通用网址、即时信息、浏览器工具条等客户端专用软件、电子书、博客、RSS等。其中,网络广告是网络营销的重要内容之一。但是,网络广告本身并不是网络营销工具,而是一种网络营销方法。网络广告信息需要一定的载体才能将信息传递给用户。此文章将介绍几种网络营销常用的工具供大家浏览学校,其中有参考一些相关网络资源和书本,如错误或不足,望提出指正。 (一)搜索引擎营销 攫索引擎营销( Search engine marketing,简称为“SEM”),就是根据用户使用搜索引擎的方式,利用用户检索信息的机会尽可能将营销信息传递给目标用户。简单来说,搜索引擎营销就是基于搜索引擎平台的网络营销,利用人们对搜索引擎的依赖和使用习惯,在人们检索信息的时候将信息传递给目标用户 搜索引擎营销的基本思想是让用户发现信息,并通过点击进入网页,进一步了解所需要的信息。 (1)搜索引擎营销的基本原理 通过进一步分析可以发现,搜索引擎营销得以实现的基本过程包括 1.企业将信息发布在网站上成为以网页形式存在的信息源(包括企业内部信息源及外部信息源); 2.搜索引擎将网站/网页信息收录到索引数据库; 3.用户利用关键词进行检索(对于分类目录则是逐渐目录查询); 4.检索结果中罗列相关的索引信息及其链接URL; 5.根据用户对检索结果的判断选择有兴趣的信息并点击URL进入信息源所在网页 (2)搜索引擎优化的基本内容和方法 搜索引擎优化工作是将一个对搜索引擎友好性不足的网站,通过对其进行合理设计改善其在搜索引擎检索结果中的表现,获得用户的关注和点击,并为用户提供有价值的信息。根据网站对搜索引擎友好的基本特征,网站对搜索引擎优化的内容可以归纳为下列几个方面 1.网站栏目结构和网站导航系统优化

相关文档
最新文档