用MDBplus修改了传奇data.mdbb里的内容怎么才能恢复?加急。。。

真心求教 我是小白用FTP工具上传ASP的网站,网站程序里的CONN.ASP文件里面的路径,该怎么改,有提示如下_百度知道
提问者采纳
数据库你上传到db下那么你修改conn.asp中代码为db=Server.MapPath(&../db/date.asp&)如果你上传到了web下的data下那么修改为db=Server.MapPath(&/data/date.asp&)前提是你已经修改date.mdb为date.asp之后并上传到相应目录下了修改后缀为asp是为了防止mdb数据库被下载如果你上传到db目录下那么你可以不用修改后缀用db=Server.MapPath(&../db/date.mdb&)即可因为db目录下一般不允许http方式下载的
提问者评价
其他类似问题
为您推荐:
ftp工具的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁kmdb和mdb调试Solaris内核
本文介绍使用kmdb和mdb调试Solaris内核的基本方法,kmdb和mdb是Solaris默认安装的内核模块调试器,可以用于调试和定位内核模块及驱动程序发生的错误。本文仅用于学习交流目的,错误再所难免,如果有勘误或疑问请与作者联系。
关键词: mdb/kmdb/panic/hung/crashdump/dump/kernel debug/Solaris/OpenSolaris
事后分析(Postmortem Debug)是目前主流的商业操作系统支持的特性之一,windows, Aix, Freebsd都支持CrashDump及事后分析,最近Linux也逐渐加入了Crashdump和分析工具的支持。了解内核开发的人都知道,很多内核 的bug都是很难重现,或者说,是在某个特定条件下,在一个微小的时间窗口内才可以重现;另外,在重要的商业客户的生产环境中,不大可能提供给内核程序员 调试这类crash或者hung的机会,因此,在客户提供crash dump文件基础上,进行事后分析就成了解决此类问题的唯一途径。
内核开发,测试甚至使用中可能会遇到以下两类极端情况:
系统crash - 例如,Windows的蓝屏,Unix的panic,Linux的opps;
系统hung - 例如,大家通常说的死机;
1. 系统Crash的分类
System panics & bad traps
Watchdog resets
Dropping out (to boot PROM or bootstrap level)
1. 为保证数据完整性,避免系统进入不可预知的错误,系统会panic()
2. panic()只会在内核空间调用,用户程序触发panic是可能的,但是只是触发而已。
3.系统也会因为检测到硬件不应该进入某种状态而panic(),叫bad trap.
panic()的主要工作
1.dump内存到device(缺省是swap区).
2.dump CPU的所有寄存器到device.
3.重新启动.
panic的过程包括
1. 打印实际panic的消息
2. 打印调用栈的backtrace
3. 内存Dump的消息
4. 尝试Reboot
2. 关于hung
系统hung的分类
1. 死锁(deadlock)问题
2. 系统资源耗尽
3. 硬件问题
发生hung怎么办?
1. 确认hung的现象,网络服务/ping/console/是否可用?
2. 尝试产生一个Crash Dump
如何产生Crash Dump?
1. SPARC系统下,尝试激活OBP用sync命令产生
2. x86系统如果启动时加载了kmdb,可以激活kmdb产生
x86上如何设置启动时加载kmdb?
有两种方法:
1. 修改grub的设置,加上 "-k", 然后reboot
/ boot / grub / menu.lst
# ----------
ADDED BY BOOTADM
DO NOT EDIT
----------
title Solaris
root (hd0, 0 ,a)
/ platform / i86pc / multiboot
/ platform / i86pc / boot_archive
# --------------------- END BOOTADM --------------------
2.或者在启动后,退到console模式,运行如下命令:
Welcome to kmdb kmdb: unable to determine terminal type: assuming `vt100 '
Loaded modules: [ crypto uppc ufs unix zfs krtld s1394 sppp nca uhci lofs
genunix ip usba specfs pcplusmp nfs random sctp cpu.AuthenticAMD. 15
进入kmdb后,内核陷入断点,要用:c来恢复系统运行。
x86下如何激活kmdb并产生crash dump?
kmdb如果已经加载,可以用SHIFT+F1+a通过键盘来激活;
如果console重定向到SP或者tip line,需要查一下发送break信号的字符序列;
# kmdb: target stopped at: kaif_enter + 7 :
popfl [ 3 ] &
出现提示符后,可以用$&systemdump命令产生crash dump:
$ & systemdump nopanicdebug:
panic[cpu3] / thread = c29b9de0: BAD TRAP: type = e (#pf Page fault) rp = c29d9f1c addr = 0
" &unknown& "
NULL pointer dereference
sched: #pf Page fault Bad kernel fault at addr = 0x0
pid = 0 , pc = 0x0 , sp = 0x202 , eflags = 0x10002
cr0: 8005003b & pg,wp,ne,et,ts,mp,pe &
cr4: 6f8 & xmme,fxsr,pge,mce,pae,pse,de &
edi: c22e0c80 esi:
ebp: c29d9f6c esp: c29d9f54
ecx: c22e0c11 eax: fec8b7b0
ss: c29d9f74
c29d9e7c unix:die + a7 (e, c29d9f1c,
3 ) c29d9f08 unix:trap + 1058
(c29d9f1c,
3 ) c29d9f1c unix:cmntrap + 9a (1b0,
160 , c) c29d9f6c
(c29d9f7c, fe813ced,) c29d9f74 genunix:kdi_dvec_enter + a (c29d9f88, fe813c8f,) c29d9f7c unix:debug_enter + 32
( 0 ) c29d9f88 unix:abort_sequence_enter + 27
( 0 ) c29d9fb0 asy:async_rxint + 1eb (c19c3d00, f9) c29d9fd4 asy:asyintr + 97
(c19c3d00,
0 ) c29b9d5c unix:cmnint + 1f7 (c29b01b0, c1600000,) c29b9db8 unix:cpu_halt + f6 ( 0 ,
0 , c29b9dd8, fe8) c29b9dc8 unix:idle + dc ( 0 ,
0 ) c29b9dd8 unix:thread_start + 8
syncing file systems... done dumping to
/ dev / dsk / c0t0d0s1, offset
, content: kernel
pages dumped, compression ratio
6.00 , dump succeeded rebooting...
3. 关于savecore
savecore - 启动时将panic()例程存在dump device(swap区)上的image保存成文件,存在指定的文件系统的目录上。
用dumpadm(1M)可以查看dump device和crash dump的保存路径;
在/var/crash/&hostname&下,可以看到以下几类文件:
unix.X 和 vmunix.X - crash dump文件,其中X是数字,是dump文件的序号
bounds - 用来记录序号,确定下一次dump的序号
4. 常用kmdb和mdb命令
大部分kmdb和mdb的命令是一样的,事后分析就是用mdb来检查crash dump文件,找到系统crash或者hung的原因。
分析crash dump的第一步就是收集必要的信息:
1. 主机名(hostname)和操作系统版本
::satus ::showrev
2. 系统硬件信息(hardware configuration)
3. 模块或驱动信息
4. Crash时系统消息缓冲区的消息
该消息缓冲区是ring buffer,有很多有价值的信息,可以知道系统crash时或者之前很长一段时间的系统消息。
进一步分析,可能需要查看以下几方面
1. 调用栈的backtrace
$c ::stack ::stackregs
2. 内核符号表
&内核函数&::dis
4. CPU寄存器
5. 调度队列(dispatch queue)
::cpuinfo -v
6. 物理内存及slab子系统
::memstat ::kmastat
7. 系统中所有进程
8. 所有内核线程
::threadlist
9. 线程状态
&kthread_t的地址&::thread
10. 某个内核线程调用栈
&kthread_t的地址&::findstack -v &proc_t的地址&::walk thread |::findstack -v
11. 同步对象的状态
&mutex地址&::mutex &读写锁的地址&::rwlock
12. 地址引用查找
&地址&::kgrep &地址&::whatthread
5. 案例分析
刚买了台Dell OptiPlex 740,因为solaris还不支持板载的1000M网卡,所以只好到 去下载了一个bcme的驱动来用。几天后,发现在家远程访问机器时,某个特定的操作会引起系统重启,通过查看系统日志发现时系统panic了;
在我的桌面机上,现在可以找到4次panic的crash dump文件:
Dump content: kernel pages
Dump device:
/ dev / dsk / c0d0s1 (swap) Savecore directory:
/ var / crash / palace
Savecore enabled: yes
/ var / crash / palace # ls
用mdb打开其中一个(序号0的crash dump)来查看:
Loading modules: [ unix genunix specfs dtrace cpu.AuthenticAMD. 15
uppc pcplusmp scsi_vhci ufs ip hook neti sctp arp usba fctl nca lofs zfs random sppp crypto ptm md cpc fcip fcp logindmux ipc nfs audiosup ]
首先,查看消息缓冲区,看panic之前发生了什么:
/ pseudo / dtrace@ 0
pseudo - device: zfs0
/ pseudo / zfs@ 0
pseudo - device: devinfo0
/ pseudo / devinfo@ 0
xsvc0 at root: space
/ xsvc@ 0 , 0
pseudo - device: rsm0
/ pseudo / rsm@ 0
pseudo - device: pseudo1
/ pseudo / zconsnex@ 1
pcplusmp: asy (asy) instance
bound to cpu
ISA - device: asy0
panic[cpu0] / thread = ffffff:
BAD TRAP: type = e (#pf Page fault) rp = ffffff addr = 86
" genunix "
due to a NULL pointer dereference
.......................................
............................................
....................................
#pf Page fault
Bad kernel fault at addr = 0x86
pid = 0 , pc = 0xfffffffffba189ff , sp = 0xffffff , eflags = 0x10286
cr0: 8005003b & pg,wp,ne,et,ts,mp,pe &
cr4: 6f8 & xmme,fxsr,pge,mce,pae,pse,de &
cr3: 2c00000 cr8: c
r9: fffffffec02023c8
rbp: ffffff
r12: fffffffec1dc8fb0
r14: fffffffec1dc9298 r15: fffffffec1dc9288
gsb: fffffffffbc292d0
rip: fffffffffba189ff
rsp: ffffff
ffffff unix:die + c8 ()
ffffff unix:trap + 135c ()
ffffff unix:cmntrap + e9 ()
ffffff genunix:ddi_dma_unbind_handle + f ()
ffffff bcme:bcme_tx_sctgth + 305
ffffff bcme:UM_SendPacketIntel + 56
ffffff bcme:UM_SendMBLKPacket + f2 ()
ffffff bcme:UM_SendPacketsMP + 91
ffffff bcme:UM_ProcessSendPackets + 66
ffffff bcme:UM_SendPacket + 9e ()
ffffff bcme:t3TxPacket + bb ()
ffffff bcme:bcme_wput + 77
ffffff unix:putnext + 22b ()
ffffff ip:tcp_send_data + 72a ()
ffffff ip:tcp_send + a7b ()
ffffff ip:tcp_wput_data + 77f ()
ffffff ip:tcp_rput_data + 2b99 ()
ffffff ip:tcp_input + 4a ()
ffffff ip:squeue_enter_chain + 11d ()
ffffff ip:ip_input + 96f ()
ffffff ip:ip_rput + 119
ffffff unix:putnext + 22b ()
ffffff bcme:t3SendUp + 2dd ()
ffffff bcme:t3ProcessRxPacket + 98
ffffff bcme:bcme_recv + 87
ffffff bcme:LM_RxPackets_Service + 56
ffffff bcme:LM_ISR_ServiceSoftInt + 29
ffffff bcme:bcme_intr + 30e ()
ffffff unix:av_dispatch_autovect + 78
ffffff unix:dispatch_hardint + 2f ()
ffffff unix:switch_sp_and_call + 13
ffffff unix:do_interrupt + 9b ()
ffffff unix:cmnint + ba ()
ffffff unix:mach_cpu_idle + 6
ffffff unix:cpu_idle + c8 ()
ffffff unix:idle + 10e ()
ffffff unix:thread_start + 8
syncing file systems...
dumping to
/ dev / dsk / c0d0s1, offset
, content: kernel
可以从panic的调用栈看出,这个panic和网络有关,涉及的模块有unix, bcme, ip, genunix;
操作系统版本:
::showrev Hostname: palace Release:
Kernel architecture: i86pc Application architecture: amd64 Kernel version: SunOS
i86pc snv_57 Platform: i86pc
我们知道,这台机器是amd64 CPU, 操作系统是Solaris 11 build 57.
因为bcme是硬件驱动,因此下面的信息有助于我们了解驱动的基本情况;
网卡信息(通过vendor id和device id: pciex14e4,167a, 可以查到网卡具体型号):
fffffffec01f09b0 pciex14e4,167a, instance # 0
(driver name: bcme)
网卡驱动版本(v10.0.3):
fffffffff7fd2000
bcme (Broadcom GbE Driver v10. 0.3 )
系统panic的消息已经告诉我们这是一个bad trap:
::status debugging crash dump vmcore. 0
( 64 - bit) from palace operating system:
snv_57 (i86pc) panic message:
BAD TRAP: type = e (#pf Page fault) rp = ffffff addr = 86
" genunix "
due to a NULL pointer dereference dump content: kernel pages only
这个bad trap实际上就是Page fault时,访问了一个NULL指针,而且addr=86,已经很明显不是一个合法的地址。
让我们验证一下,首先,查看调用栈的详细信息:
::stackregs ffffff ddi_dma_unbind_handle + 0xf ( 66 ) ffffff bcme_tx_sctgth + 0x305 () ffffff UM_SendPacketIntel + 0x56 () ffffff UM_SendMBLKPacket + 0xf2 () ffffff UM_SendPacketsMP + 0x91 () ffffff UM_ProcessSendPackets + 0x66 () ffffff UM_SendPacket + 0x9e () ffffff t3TxPacket + 0xbb () ffffff bcme_wput + 0x77 () ffffff putnext + 0x22b (fffffffec1954638, fffffffee22bf300) ffffff tcp_send_data + 0x72a (fffffffec82452c0, fffffffee21e3650, fffffffee22bf300) ffffff tcp_send + 0xa7b (fffffffee21e3650, fffffffecec,
0 , ffffffc, ffffff,
ffffff, ffffff, 13a00be, 7fffffff) ffffff tcp_wput_data + 0x77f (fffffffec82452c0,
0 ) ffffff tcp_rput_data + 0x2b99 (fffffffec82450c0, fffffffee2240f80, fffffffec1563f00) ffffff tcp_input + 0x4a (fffffffec82450c0, fffffffee2240f80, fffffffec1563f00) ffffff squeue_enter_chain + 0x11d (fffffffec1563f00, fffffffee2240f80, fffffffee2240f80,
1 ) ffffff ip_input + 0x96f (fffffffec1b9f428,
0 , fffffffee2240f80,
0 ) ffffff ip_rput + 0x119 (fffffffec1954540, fffffffee2240f80) ffffff putnext + 0x22b (fffffffec19547d0, fffffffee2240f80) ffffff t3SendUp + 0x2dd () ffffff t3ProcessRxPacket + 0x98 () ffffff bcme_recv + 0x87 () ffffff LM_RxPackets_Service + 0x56 () ffffff LM_ISR_ServiceSoftInt + 0x29 () ffffff bcme_intr + 0x30e () ffffff av_dispatch_autovect + 0x78 ( 10 ) ffffff dispatch_hardint + 0x2f ( 10 ,
0 ) ffffff switch_sp_and_call + 0x13 () ffffff do_interrupt + 0x9b (ffffff,
1 ) ffffff _interrupt + 0xba () ffffff mach_cpu_idle + 6 () ffffff cpu_idle + 0xc8 () ffffff idle + 0x10e () ffffff thread_start + 8 ()
mdb不但打出了函数名,而且有些函数的参数都得到了,其中ddi_dma_unbind_handle的参数是0x66,panic时,系统正在执行的指令时ddi_dma_unbind_handle+0xf,我们可以反汇编这个函数看看该指令是什么?
ddi_dma_unbind_handle::dis ddi_dma_unbind_handle:
% rbp ddi_dma_unbind_handle + 1 :
% rsp, % rbp ddi_dma_unbind_handle + 4 :
$ 0x10 , % rsp ddi_dma_unbind_handle + 8 :
% rdi, - 0x8 ( % rbp) ddi_dma_unbind_handle + 0xc :
% rdi, % rdx ddi_dma_unbind_handle + 0xf :
0x20 ( % rdx), % rsi ddi_dma_unbind_handle + 0x13 :
0x98 ( % rsi), % rdi ddi_dma_unbind_handle + 0x1a :
% eax, % eax ddi_dma_unbind_handle + 0x1c :
* 0xe8 ( % rsi) ddi_dma_unbind_handle + 0x22 :
ddi_dma_unbind_handle + 0x23 :
反汇编的结果有时会比较难看懂,好在OpenSolaris已经开放源代码了,我们可以对照代码:
ddi_dma_unbind_handle(ddi_dma_handle_t h) {
ddi_dma_impl_t
(ddi_dma_impl_t
dev_info_t
( * funcp)(dev_info_t
* , dev_info_t
* , ddi_dma_handle_t);
hp -& dmai_
(dev_info_t
* )DEVI(dip) -& devi_bus_dma_
DEVI(dip) -& devi_bus_dma_
(( * funcp)(hdip, dip, h)); }
不难看出,ddi_dma_unbind_handle+0xf指令正是以下这行,访问dmai_rdip成员的语句:
dip = hp-&dmai_
可以用mdb验证一下:
::offsetof ddi_dma_impl_t dmai_rdip
offsetof (ddi_dma_impl_t, dmai_rdip)
ddi_dma_unbind_handle+0xf对应的指令是:
ddi_dma_unbind_handle+0xf:
0x20(%rdx),%rsi
%rdx寄存器的值可以从以下命令得到:
0xfffffffec02023c8
0xfffffffec1dc8fb0
0xfffffffec1dc9298
0xfffffffec1dc9288
0xfffffffffba189ff
ddi_dma_unbind_handle + 0xf
iopl = 0x0
status =& of,df,IF,tf,SF,zf,af,PF,cf &
所以ddi_dma_unbind_handle+0xf指令实际上是去访问0x20(%rdx)对应的地址而发生的bad trap, 即addr=88:
0x66 + 0x20 / X mdb: failed to read data from target: no mapping
再看一下ddi_dma_unbind_handle(9F)里的说明,这个函数几乎是所有的使用dma的驱动都需要用到的:
Kernel Functions
ddi_dma_unbind_handle(9F)
ddi_dma_unbind_handle
unbinds the address
a DMA handle
& sys / ddi.h &
& sys / sunddi.h &
ddi_dma_unbind_handle(ddi_dma_handle_t handle);
PARAMETERS
DMA handle previously allocated by a
ddi_dma_alloc_handle(9F).
可见,在bcme驱动调用ddi_dma_unbind_handle时,传递的handle可能已经被释放,或者是一个非法的地址,可惜我没有 bcme驱动的源代码,不然也许可以进一步定位错误,因为虽然mdb没有自动找到bcme函数的参数,但是因为我们有bcme的栈指针,或许可以从栈中找 到已经被保存的函数参数,当然,这要对AMD64的ABI比较熟悉:
0xffffff , 30 / nap
0xffffff :
0xffffff :
0xfffffffff7fe9d38
0xffffff :
0xffffff :
0xffffff :
bcme_tx_sctgth + 0x305
0xffffff :
0xfffffffee22bf300
0xffffff :
0xffffff :
0xfffffffec1dab000
0xffffff :
0xfffffffec1dc8fb0
0xffffff :
0xffffff :
QQ_PushTail + 0x57
0xffffff :
0xfffffffec1db39e0
0xffffff :
0x48a22ddc
0xffffff :
0xffffff :
0xbaddcafe
0xffffff :
0xffffff :
0x522f7fe488d
0xffffff :
0xfffffffee22c8880
0xffffff :
0xfffffffee22b6ddc
0xffffff :
0xfffffffec1db3d68
0xffffff :
0xffffff :
0xfffffffec1dab000
0xffffff :
0xffffff :
0xffffff :
UM_SendPacketIntel + 0x56
0xffffff :
0xfffffffec1dab000
0xffffff :
0xfffffffee22bf300
0xffffff :
0xffffff :
0xffffff :
0xffffff :
0xffffff :
0xffffff :
0xfffffffec1dab040
0xffffff :
0xffffff :
UM_SendMBLKPacket + 0xf2
0xffffff :
0xfffffffec1db3f30
0xffffff :
0xfffffffec1dab000
0xffffff :
0xfffffffee22bf300
0xffffff :
0xfffffffee22bf300
0xffffff :
0xfffffffec1db39f0
0xffffff :
0xfffffffee3be9600
0xffffff :
0xffffff :
UM_SendPacketsMP + 0x91
0xffffff :
0xfffffffec1954638
0xffffff :
0xfffffffee22bf300
0xffffff :
0xfffffffec1dab000
0xffffff :
0xfffffffec1db3f20
0xffffff :
0xfffffffee22bf300
即使没有源代码,我们也知道,这是bcme驱动的一个bug,我会设法联系broadcom公司的人报告一个bug,并且我可以提供crash dump文件供他们分析和解决这个问题。
请正确填写下面信息
标 签:kmdb和mdb调试Solaris内核
是否保存此网页快照
是否公开此收藏在ACCESS上面新建一个数据库data.mdb,表名为data,列有zb(支部),xm(姓名),ny(年月),df(党费)._百度知道
在ACCESS上面新建一个数据库data.mdb,表名为data,列有zb(支部),xm(姓名),ny(年月),df(党费).
比如里面有五条记录如下:第一支部 张三
.6第一支部 李四 .8第二支部 张五 .0第三支部 张六 .0 为了方便查询,自动把zb放入combo1里面,把xm自动放入combo2里面,把ny自动放入combo3里面,把df自动放入combo4里面
问题是,如果我把选中combo1中的选项,自动在combo2中显示符合combo1的相关内容。如果我不把此窗口关住。当进行第二次操作时,第一次在combo2的符合combo1的相关内容还存在。但我不想让第一次操作的东西在combo2中存在,请教高手,如何解决。最好有代码。谢谢我是刚学的,水平不高。请高手见谅。
提问者采纳
每完成一次操作时,就把该清空的清空就行了吧。这样好像能解决吧
提问者评价
shide.xiexie
其他类似问题
为您推荐:
党费的相关知识
其他1条回答
没做过VB,以前拿C#这样写过。思路是,根据comboBox3.SelectedIndex判断,使用switch..case。改动之后就comboBox4.Items.Clear()。不过忽然想到,用tree的结构可不可以? 刚刚看到几个别人的博文,估计有用,不过也是C#
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁如何使用asp修改.mdb里的值_百度知道
提问者采纳
同意一楼、都是一个道理。可以直接用一句sql:update [user] set password='新密码' where username=‘填写的用户名’。当然还有其他写法。
请问是这样吗?怎么不行啊。数据库的信息没有改变。户名和密码是变量set rs=server.createobject(&adodb.recordset&)set sql=server.createobject(&adodb.recordset&)sql=&update user set password='&&passwordN&&' where username='&&username&&'&
提问者评价
其他类似问题
为您推荐:
mdb的相关知识
其他2条回答
不明白你都已经会判断原始密码了?还不会查找用户名?那你是怎么判断原始密码的??
我只想打个酱油。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁大家都知道MDB就是数据库,但是随着office越来越大,有时候我没根本没有装office ,但又得打开mdb数据库,这是多么纠结的事情。打开的文件类型如下图,我也懒得用文字描写了浏览编辑工具(MDB Viewer Plus)就是让你在没有安装access的情况下打开mdb文件,但我试了两个,好像效果并不理想,总是需要输入密码什么,但我access明明没有设置密码。该软件提供了一个标签式界面(用于每个表和对象)以及行内编辑功能和一个过滤数据设置或者使用标准的SQL语法运行定制的SQL查询的选项。其它功能包括导出表到CSV,数据打印,记录浏览等等。MDB Viewer Plus可以独立运行并且不需要进行安装&
(12)个资源
mdb文件浏览编辑工具(MDB Viewer Plus) 2.29 英文绿色版
其它相关版本
7.7M / 06-03 / 1.0 免费最新版 【2015无广告享vip特权】
19.2M / 06-24 / 2.2221 绿色汉化版
849KB / 08-27 / 1.024 绿色免费版
39.0M / 06-07 / Build 3.3.92 特别版
272KB / 04-20 / 英文绿色单文件版
本类软件排行
装机必备软件
编程编译数据设计

我要回帖

更多关于 mdbplus 的文章

 

随机推荐