DEBUG 使用教程 查错 排错 debug 模式 大全

合集下载

debug使用祥解

debug使用祥解

debug使用详解首先,向大家推荐使用DR-DOS7所带的DR-DEBUG,指令支持到Pemtium pro,功能强大,且支持宏。

最方便的是可以用回车代替上一条u/d/p/t指令,方便察看和调试。

下面把其帮助翻译如下:汇编,把输入的汇编语言转成机器码A [address] (example: Acs:100)设置中断点以调试B [address] [count] [condition] (example: B100 2 al=80)比较两段内存内容Compare C range address (example: C200 20d 500)显示指定内存数据Dump D [range] (example: Dcs:500 L 10)编辑内存数据Enter E [address] [data] (example: Eds:500 "Hello ")填充内存Fill F range data (example: F100 13f "Test ")运行程序从指定点Go G [=address] [breakpoints] (example: Gcs:4bb0)计算Hex H [value1] [value2] (example: H10e 01)从I/O埠输入Input I port (example: I3f2)载入文件或指定逻辑扇区内容Load L [address] [drive] [firstsec] [number] (ex: L0Cff 3 09 10)移动(复制)内存内容Move M range address (example: Mcs:200 220 cs:400)指定操作文件名Name N [drive:] [path] filename (example: )向I/O埠输出Output O port value (example: O3ff 10)单步执行(跳过int/rep/call等)Proceed P [=address] [number] (example: P=ds:3fff)退出debugQuit Q更改或显示寄存器Register R [register_name] (example: Rax 1000)搜索数据于指定内存Search S range data (example: Sds:200 500 32)单步执行(进入int/rep/call等)Trace T [=address] [number] (example: T=3cff:0100 10)反汇编指定内存中机器码Unassemble U [range] (example: U3cff:0200 400)显示屏幕内容(相当于<F4>)Viewswap V (any key returns)写入文件或指定逻辑扇区内容Write W [address] [drive] [firstsec] [number] (ex: Wds:200 0 16 0f) (range 可以是: 开始[段:]偏移结束偏移或开始地址 L 长度)以下是详细使用说明:--- 术语表 ---pathname - 文件名(路径可选)testparms - 参数address - 内存地址[段:]偏移如果省略段地址,以CS用作汇编\反汇编;DS用于其他功能range - 可以是: 开始[段:]偏移结束偏移开始地址 L 长度开始地址, +长度reg - 寄存器名list - 由空格或逗号分开的一些数值(给定类型的)drive - 0 = A:, 1 = B:, ...firstsec - 逻辑扇区号(以0开始)--- 运算符号 ---数可以是16进制(默认的), #十进制, \八进制, %二进制, '字符串'("chars"), 寄存器, [绝对地址], ^堆栈。

debug常见命令使用说明

debug常见命令使用说明

五、DEBUG调试程序DEBUG.EXE程序是专门为分析、研制和开发汇编语言程序而设计的一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能。

它能使程序设计人员或用户触及到机器内部,因此可以说它是80X86CPU的心灵窗口,也是我们学习汇编语言必须掌握的调试工具。

1)DEBUG程序使用在DOS提示符下键入命令:C>DEBUG [盘符:][路径][文件名.EXE][参数1][参数2]这时屏幕上出现DEBUG的提示符“-”,表示系统在DEBUG管理之下,此时可以用DEBUG 进行程序调试。

若所有选项省略,仅把DEBUG装入内存,可对当前内存中的内容进行调试,或者再用N和L命令,从指定盘上装入要调试的程序;若命令行中有文件名,则DOS把DEBUG 程序调入内存后,再由DEBUG将指定的文件名装入内存。

2)DEBUG的常用命令(1)汇编命令A格式:A[起始地址]功能:将输入源程序的指令汇编成目标代码并从指定地址单元开始存放。

若缺省起始地址,则从当前CS:100地址开始存放。

A命令按行汇编,主要是用于小段程序的汇编或对目标程序的修改。

(2)反汇编命令U格式1:U[起始地址]格式2:U[起始地址][结束地址|字节数]功能:格式1从指定起始地址处开始将32个字节的目标代码转换成汇编指令形式,缺省起始地址,则从当前地址CS:IP开始。

格式2将指定范围的内存单元中的目标代码转换成汇编指令。

(3)显示、修改寄存器命令R格式:R[寄存器名]功能:若给出寄存器名,则显示该寄存器的内容并可进行修改。

缺省寄存器名,则按以下格式显示所有寄存器的内容及当前值(不能修改)。

AX=0000 BX=0004 CX=0020 DX=0000 SP=0080 BP=0000 SI=0000DI=0000 DS=3000 ES=23A0 CS=138E IP=0000NV UP DI PL NZ NA PO NC138E:0000 MOV AX,1234-R AX ;输入命令AX 0014 ;显示AX的内容:;供修改,不修改按回车。

DEBUG使用方法简介

DEBUG使用方法简介

2.3 DEBUG使用方法简介:DEBUG是DOS命令,必须在DOS环境下运行。

由于目前都使用WINDOWS操作系统,应设法进入实地址模式的DOS环境,才能可靠地运行DEBUG。

一般可用DOS启动盘启动系统,或在WINDOWS-98系统退出时选择“切换到MSDOS”操作,进入到实地址模式的DOS环境。

由于DEBUG是DOS外部命令,因此,须把DEBUG.EXE文件拷贝到当前目录下来运行DEBUG,DOS启动盘中应事先拷贝有DEBUG.EXE文件,在WINDOWS98系统中,“C:\WINDOWS\COMMAND\”目录下有DEBUG.EXE文件。

后面的操作,假设DEBUG.EXE文件都已事先拷贝到当前目录下。

在WINDOWS操作系统中(包括WINDOWS98、2K、XP等),系统提供了V86模式的“命令提示符”窗口,在此窗口中也能运行DEBUG,但DEBUG的某些功能会受到WINDOWS系统的限制。

1.启动与退出DEBUG:启动DEBUG,在DOS提示符下输入:DEBUG[回车]屏幕显示“-”,表示已启动了DEBUG。

“-”是DEBUG子命令等待状态,后面所有的DEBUG操作(包括运行调试自编的汇编语言程序)都是在此“-”提示符下所进行的DEBUG 子命令执行。

退出DEBUG,在“-”提示符下输入:Q[回车]屏幕显示DOS命令提示符:C:\> 或A:\> 。

2.进入与退出输入汇编指令:在“-”提示符下输入:A [偏移地址] [回车]屏幕显示“<段地址>:<偏移地址> |”,此处将等待你输入汇编语言程序或实验指令。

当一条指令输入完毕[回车]后,又将自动出现下一对“<段地址>:<偏移地址> |”等待你输入下条指令,如此重复,将帮助你把整段汇编语言程序输入完毕。

注意:如果输入汇编指令时手误,屏幕上将当场提示错误“ERROE”,自动地址不进步,还在原地址上等待你重新输入正确的汇编指令。

DEBUG命令详解

DEBUG命令详解

debug命令DEBUG命令参数详解DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。

它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。

它的功能包括以下几个方面。

1,直接输入,更改,跟踪,运行汇编语言源程序;2,观察操作系统的内容;3,查看ROM BIOS的内容;4,观察更改RAM内部的设置值;5,以扇区或文件的方式读写软盘数据DEBUG把所有数据都作为字节序列处理。

因此它可以读任何类型的文件。

DEB UG可以识别两种数据: 十六进制数据和ASCⅡ码字符。

它的显示格式是各个字节的十六进制值以及值在32与126之间的字节的相应ASCⅡ码字符。

在DEBUG中输入数据有两种方法: 提示方法和非提示方法。

在用提示方法时,用户可以输入要求输入数据的命令,后跟数据所要输入的地址。

然后用户就可以看到该地之中已有内容及一个冒号提示符。

此时用户可以在提示符下输入一个新的值或者按下回车键或CTRL+C回到短横(-)提示符。

在运用非提示方法时,用户可以输入要输入数据的内存地址以及要输入的字节。

但与使用字处理程序或正文编辑程序时不一样,在使用DEBUG时,用户不能直接移动光标到一入口点输入或修改数据,而要一次输入一个或几个字节。

在使用DEBUG时可以只涉及内存中的数据,从而一般都要指定所要处理的内存地址,地址的输入格式是: [段地址]: [位移]。

如果没有输入地址,DEBUG将假定为当前内存段,从位于地址100H的字节开始。

前100H字节保留给程序段前缀使用,这一专用区域用于建立DOS与程序之间的联系。

DEBUG总是用四位十六进制数表示地址。

用两位数表示十六进制数据。

讲到这里大家应该对DEBUG有了初步的了解,但是光知道这些可不够,接下来我来讲讲DEBUG的命令格式和命令。

DEBUG使用方法

DEBUG使用方法

DEBUG使用方法DEBUG使用方法格式:DEBUG[[drive:][path]filename[testfile-para meters]]参数:[drive:][path]filename指定待调试可执行文件的所在位置及文件名。

testfile-parameters指定待设计可执行文件需要的命令参数。

相关命令-A (汇编,Assemble)-C (比较,Compare)-D (卸出,Dump)-E (输入数据,Enter))-F (填充,Fill)-G (执行,Go)-H (十六进行运算,Hex)-I (读输入口,Input)的所在位置及名子,DEBUG执行时将显示符(-)。

这时,用户可输入任何一个DEBUG调试命令。

DEBUG命令以下为DEBUG使用的调试命令及其简介:?显示所有的调试命令A汇编8086/8087/8088汇编语言源程序。

C比较两块内存的内容。

D显示部分内存的内容。

E人指定的地址开始把数据送入内存。

F将指一值填进某一范围的内存。

G运行内存中的程序。

H执行十六进制算术运算。

I从指定输入口输入一道字节值。

L把文件或磁盘扇区内容装入内存。

M拷贝某块内存的内容。

N指定文件名,以便L或W命令读写该文件;指定正调试文件所需的参数。

O发送一字节值至指定输出口。

P执行循环程序,重复字符串指令,软中断,或子程序。

Q结束DEBUG命令执行。

R显示或修改一个或数个寄存器内容。

S在内存指定范围内找寻指定的值。

T执行一条指令,然后显示所有寄存器的内容,所有标志状态,以及下一条要执行的指令(汇编语言格式)。

U反汇编某一范围内的字节,显示其相应汇编语言源语名。

W把正调试文件写入磁盘。

XA分配扩充内存XD释放分配的扩充内存。

XM作扩充内存页的影像。

XS显示扩充内存的状态。

命令参数间的隔离除命令Q外,所有的调试命令都可使用参数。

参数间可用逗号或空格隔开,但只是在十六进制数之间才要求必须隔开。

因此,下列命令是等价的:dcs: 100 110D CS: 100 110D,CS:100,110指定有效地址调试命令中的addres(地址)参数指定内存中的地址。

debug 的使用

debug 的使用

Debug是一种程序调试工具,主要用于帮助程序员检查和修复程序中的错误。

以下是如何使用Debug的基本步骤:
设置断点:断点是一种标记,告诉Debug从标记的地方开始查看。

在要设置断点的代码行上单击鼠标左键即可。

运行程序:在代码区域右击,选择Debug执行。

单步执行:点击Step Into(F7)这个箭头,或者直接按F7,以一行一行地操纵代码,从而判断程序的执行流程是否与预期一致。

查看变量值:在执行过程中,可以查看变量的当前值,以了解程序状态。

删除或禁用断点:选择要删除的断点,单击鼠标左键即可。

如果是多个断点,可以每一个再点击一次。

也可以一次性全部删除。

以上是使用Debug的基本步骤,但请注意,具体使用方式可能会根据Debug的具体版本和配置有所不同。

DEBUG 使用教程 查错 排错 debug 模式 大全

DEBUG 使用教程  查错 排错 debug 模式 大全

1.项目报错,即eclipse里面项目工程有红叉eclipse中打开Problems视图,window->show view->other->General->Problems通过Problems视图中的错误信息,找到错误源(有可能是java文件,或者(xml,有可能是 1.xml有错;2.含有错误字符(比如从word复制过来);3.假报)buildpath -> eclipse中工程,右键->Build Path-> Configure Build path -> Libraries选项卡察看JRE System Library(引入jdk自带包0),Server Runtime(引入jsp/servlet实现包,比如Apache Tomcat V6.0(这个是window->preferences->server下定义的Runtime Environment对应))Web App Libraries(包含了eclipse中项目工程自带的WEB-INF/lib 下引入的jar包)junit(调试用,不一定需要)User Library(一般eclipse使用者把自己引入的jar包放在一起,定义一个library,在eclipse中引用)2.项目启动,控制台报错察看控制台错误信息可能错误信息包括:1.session factory(可能是hibernate的实体类定义错误), 控制台一般看到dao,sessionFactory,hibernate的关键字eg.Caused by: org.hibernate.PropertyNotFoundException: Could not find a getter for name1 in class demo.ssh2.model.Roleatorg.hibernate.property.BasicPropertyAccessor.createGetter(BasicProperty Accessor.java:306)atorg.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAc cessor.java:299)atorg.hibernate.mapping.Property.getGetter(Property.java:294)atorg.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEnt ityTuplizer.java:300)atorg.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTu plizer.java:141)atorg.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.ja va:78)... 55 more2.bean定义错误,dao,service,action,1.<property name="" ref=""/>中的ref找不到对应的bean的id从sessionfactory->dao->service->action,前面的错误总能导致出后面的错误eg.比如定义了如下spring配置信息<bean id="sessionFactory" ..../><bean id="baseDao" abstract="true" class="demo.ssh2.dao.BaseHibernateDao"><property name="sessionFactory" ref="sessionFactory1" /></bean>控制台报错org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao' defined in file...(备注:此处省略多少字)Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'sessionFactory1' is definedatorg.springframework.beans.factory.support.DefaultListableBeanFactory.g etBeanDefinition(DefaultListableBeanFactory.java:527)atorg.springframework.beans.factory.support.AbstractBeanFactory.getMerg edLocalBeanDefinition(AbstractBeanFactory.java:1083)atorg.springframework.beans.factory.support.AbstractBeanFactory.doGetB ean(AbstractBeanFactory.java:274)atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:190)atorg.springframework.beans.factory.support.BeanDefinitionValueResolver .resolveReference(BeanDefinitionValueResolver.java:322)... 30 more2.setter方法名和spring配置文件中的<property name="" ref=""/>中的name 不匹配eg.比如定义如下:<bean id="roleService" class="demo.ssh2.service.RoleService"><property name="roleDao" ref="roleDao"/></bean>RoleService中roleDao的setter方法如下public void setRoleDao1(RoleDao roleDao) {this.roleDao = roleDao;}方法setRoleDao1和<property name="roleDao" 不匹配控制台报错:Caused by: org.springframework.beans.NotWritablePropertyException:Invalid property 'roleDao' of bean class[demo.ssh2.service.RoleService]:Bean property 'roleDao' is not writable or has an invalid setter method.Did you mean 'roleDao1'?atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:1024)atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:900)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:76)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:58)atorg.springframework.beans.factory.support.AbstractAutowireCapableBea nFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.jav a:1358)... 28 more3.缺少setter方法比如配置<bean id="roleService" class="demo.ssh2.service.RoleService"><property name="roleDao" ref="roleDao"/></bean>在类RoleService中没有定义roleDao的setter方法控制台报错:Caused by: org.springframework.beans.NotWritablePropertyException:Invalid property 'roleDao' of bean class [demo.ssh2.service.RoleService]:Bean property 'roleDao' is not writable or has an invalid setter method.Does the parameter type of the setter match the return type of the getter?atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:1024)atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:900)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:76)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:58)atorg.springframework.beans.factory.support.AbstractAutowireCapableBea nFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.jav a:1358)... 28 more3.eclipse缓存问题,更改了文件,部署到web server中的文件仍然旧的servers视图中,先停止server,然后删除servereclipse中点击项目工程,Project->clean->最上面选中Clean Projects selected below->点击ok3.项目运行,控制台报错察看控制台错误信息可能错误信息包括:1.jdbc配置错误(数据库url,用户名,密码)比如jdbc配置文件错误,将ername=root修改为ername=root1页面报错如下:org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection 控制台报错如下:2013-11-20 09:39:25,441 [org.hibernate.util.JDBCExceptionReporter]-[ERROR] Cannot create PoolableConnectionFactory (Access denied for user 'root1'@'localhost' (using password: YES))2.页面访问不到404或页面有异常信息根据访问的url里面的action,找到Action类对应的方法,打个断点(打在方法体内的代码块的第一行)如果不能进入debug视图,表示struts.xml配置文件有问题,页面输入url中的action找不到对应的Action类eg.比如将strus.xml配置名为<action name="role/list",页面访问role/list1.acito页面报错:ng.NoSuchMethodException:demo.ssh2.action.RoleAction.list1()ng.Class.getMethod(Class.java:1605)如果能进入debug视图,表示struts.xml配置文件没有问题,1.一般控制台会有异常栈错误信息eg.比如RoleAction有如下方法public String list(){List<?> list = roleService.getList();ActionContext.getContext().put("roles", list);return "list";}RoleService中getList方法如下public List<?> getList(){throw new RuntimeException();}页面报错:ng.RuntimeExceptiondemo.ssh2.service.RoleService.getList(RoleService.java:13)2.struts2标签或jstl标签使用错误3.页面不能显示出数据,1.action中私有实体类属性没有gettter/setter方法,或者没有使用request.setAttribute,或者使用ActionContext.getContext().put,传值2.struts2标签或jstl标签使用不对,但页面不报错。

DEBUG的使用方法

DEBUG的使用方法

DEBUG程序的使用一、在DOS的提示符下,可如下键入Debug启动调试程序:DEBUG [路径\文件名] [参数1] [参数2]Debug后可以不带文件名,仅运行Debug程序;需要时,再用N和L命令调入被调试程序。

命令中可以带有被调试程序的文件名,则运行Debug的同时,还将指定的程序调入主存;参数1/2是被调试程序所需要的参数。

在Debug程序调入后,根据有无被调试程序及其类型相应设置寄存器组的内容,发出Debug的提示符“-”,此时就可用Debug命令来调试程序。

•运行Debug程序时,如果不带被调试程序,则所有段寄存器值相等,都指向当前可用的主存段;除SP之外的通用寄存器都设置为0,而SP指示当前堆栈顶在这个段的尾部;IP=0100h;状态标志都是清0状态。

•运行Debug程序时,如果带入的被调试程序扩展名不是.EXE,则BX.CX包含被调试文件大小的字节数(BX为高16位),其他同不带被调试程序的情况。

•运行Debug程序时,如果带入的被调试程序扩展名是.EXE,则需要重新定位。

此时,CS : IP和SS : SP根据被调试程序确定,分别指向代码段和堆栈段。

DS=ES指向当前可用的主存段,BX.CX包含被调试文件大小的字节数(BX为高16位),其他通用寄存器为0,状态标志都是清0状态。

二、DEBUG命令的格式Debug的命令都是一个字母,后跟一个或多个参数:字母 [参数]命令的使用中注意:①字母不分大小写;②只使用16进制数,没有后缀字母;③分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符;④每个命令只有按了回车键后才有效,可以用Ctrl+Break中止命令的执行;⑤命令如果不符合Debug的规则,则将以“error”提示,并用“^”指示错误位置。

许多命令的参数是主存逻辑地址,形式是“段基地址 : 偏移地址”。

其中,段基地址可以是段寄存器或数值;偏移地址是数值。

如果不输入段地址,则采用默认值,可以是缺省段寄存器值。

DEBUG命令使用解析及范例大全

DEBUG命令使用解析及范例大全

DEBUG命令使用解析及范例大全启动Debug,它是可用于测试和调试MS-DOS 可执行文件的程序。

Debug [[drive:][path] filename [parameters]]参数[drive:][path] filename指定要测试的可执行文件的位置和名称。

parameters指定要测试的可执行文件所需要的任何命令行信息。

说明使用Debug 命令但不指定要测试的文件如果使用没有位置和文件名的Debug 命令,然后键入所有的Debug 命令以响应Debug 提示符,连字符(-)。

Debug 命令以下是Debug 命令列表:? 显示Debug 命令列表。

a 汇编8086/8087/8088 记忆码。

c 比较内存的两个部分。

d 显示部分内存的内容。

e 从指定地址开始,将数据输入到内存。

f 使用指定值填充一段内存。

g 运行在内存中的可执行文件。

h 执行十六进制运算。

i 显示来自特定端口的 1 字节值。

l 将文件或磁盘扇区内容加载到内存。

m 复制内存块中的内容/n 为l 或w 命令指定文件,或者指定正在测试的文件的参数。

o 向输出端口发送 1 个字节的值。

p 执行循环、重复的字符串指令、软件中断或子例程。

q 停止Debug 会话。

r 显示或改变一个或多个寄存器。

s 在部分内存中搜索一个或多个字节值的模式。

t 执行一条指令,然后显示所有寄存器的内容、所有标志的状态和Debug 下一步要执行的指令的解码形式。

u 反汇编字节并显示相应的原语句。

w 将被测试文件写入磁盘。

xa 分配扩展内存。

xd 释放扩展内存。

xm 映射扩展内存页。

xs 显示扩展内存的状态。

分隔命令参数所有Debug 命令都接受参数,除了q 命令之外。

可以用逗号或空格分隔参数,但是只有在两个十六进制值之间才需要这些分隔符。

因此,以下命令等价:dcs:100 110d cs:100 110d,cs:100,110指定有效地址项Debug 命令中的address 参数指定内存位置。

DEBUG的使用方法

DEBUG的使用方法

DEBUG的使用方法1.设置断点:断点是在代码中设置的一个位置,程序在运行到这个位置时会暂停执行。

可以在关键的代码行上设置断点,以便在程序运行到这些位置时进行观察和调试。

在DEBUG工具中,我们可以在代码行上单击左侧的空白区域来设置断点。

2.执行步进:步进是一种按步执行程序的方法,可以逐行或逐过程执行代码。

通过逐行执行代码,可以观察每一行代码的执行情况,以便找出程序中的错误。

可以使用DEBUG工具提供的步进功能,一次执行一行代码或一个过程。

3.观察变量:在程序运行过程中,可以观察和监视变量的值,以便了解程序的状态。

可以使用DEBUG工具来查看变量的值,并在程序执行过程中跟踪变量的变化。

这对于发现变量值的改变和问题的根源非常有帮助。

4.输出调试信息:在调试过程中,可以通过在代码中插入输出语句来输出调试信息。

可以使用DEBUG工具提供的输出窗口或控制台来查看这些调试信息。

输出调试信息有助于了解程序的执行流程,找到错误发生的原因。

5.检查堆栈:堆栈是保存程序执行状态的一种数据结构,可以在DEBUG工具中查看和跟踪堆栈的状态。

堆栈信息可以告诉我们程序的执行路径,以及代码是如何调用和返回的。

通过检查堆栈,我们可以找到错误发生的上下文和调用链。

6.使用断言:断言是一种在代码中插入的条件,用于检查程序执行过程中的假设和要求。

可以使用DEBUG工具中的断言功能,在关键的代码位置插入断言条件。

当断言条件不满足时,程序会执行中断操作,从而帮助我们快速定位错误。

7.进行追踪:追踪是一种记录程序执行过程的方法,可以在DEBUG工具中查看程序的执行轨迹。

追踪记录了程序的每一步操作,包括函数调用、条件语句的执行和变量的修改等。

通过追踪,我们可以逐步了解程序的执行情况,并找到错误所在。

8.使用条件断点:条件断点是一种在特定条件下触发断点的方法。

可以在DEBUG工具中设置条件断点,当满足特定条件时,程序会在断点处暂停执行。

条件断点可以帮助我们找出特定情况下的错误,提高调试的效率。

DEBUG的命令及功能

DEBUG的命令及功能

DEBUG的命令及功能1. A(assemble):将指令转换成机器码并存储到内存中。

-A100:在内存地址100处开始输入指令。

2. D(dump):显示内存中的内容。

-D100200:显示内存地址从100到200的内容。

3. E(enter):修改内存中的数据。

-E1004000:在内存地址100处将数据修改为40。

4. G(go):执行程序。

-G100:从内存地址100处开始执行程序。

6. Q(quit):退出DEBUG。

-Q:退出DEBUG程序。

7. R(registers):显示和修改CPU寄存器的值。

-R:显示所有寄存器及其值。

-RAX1234:将AX寄存器的值修改为12348. T(trace):单步跟踪程序的执行。

-T:执行下一条指令并停止。

9. P(proceed):继续执行程序直至下一个断点或程序结束。

-P:继续执行程序。

10. U(unassemble):将机器码转换成指令。

-U100120:从内存地址100处开始将机器码转换成指令。

11. B(breakpoint):设置断点。

-B100:在内存地址100处设置断点。

12. S (search):在内存中指定的内容。

- S 100 200 "Hello": 在内存地址100到200之间字符串"Hello"。

13. L(load):加载程序到内存中。

-L100:从内存地址100处加载程序。

14. W(write):将内存中的数据写入文件。

- W 100 200 file.txt: 将内存地址100到200的数据写入到文件file.txt。

15. M(move):将内存中的数据移动到指定的地址。

-M100200300:将内存地址100到200的数据移动到地址300处。

16. X (execute):执行子程序。

-X100:从内存地址100处执行子程序。

17. H(help):显示DEBUG命令的帮助信息。

DEBUG各命令详细说明(很详细)

DEBUG各命令详细说明(很详细)

DEBUG各命令详细说明(很详细)2.启动DEBUG在命令窗口中启动DEBUG,启动命令一般为:DEBUG [文件名] [参数表]。

其中:文件名指定被调试的文件,其包括名和后缀,参数表是被调试文件运行时所需要的参数。

被调试的文件可以是系统中的任何文件,但通常它们的后缀为.EXE或.COM。

当DEBUG启动成功后,将显示连接符“-”,这时,可输入各种DEBUG命令。

DEBUG中所有命令及其含义如DEBUG各命令功能说明表所示。

关于使用命令的几点说明:在提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行命令是单个字母,命令和参数的大小写可混合输入可用F1、 F2、F3、Ins、Del、左移键、右移键等编辑键来编辑本行命令当命令出现语法错误时,将在出错位置显示“^ Error”可用Ctrl+C或Ctrl+Break来终止当前命令的执行,还可用Ctrl+S或Ctrl+Num Lock来暂停屏幕显示(当连续不断地显示信息时)以下通过实现十九个示例来熟悉DEBUG的命令集和基本的汇编指令。

R命令的使用R命令作用:观看和修改寄存器的值。

在提示符“-”下输入以下命令:R。

DEBUG将会显示出当前所有寄存器和标志位的状态。

接下来再输入命令RCX。

在提示符“:”后输入100。

该命令的作用是将寄存器CX的值设置为100(注意:DEBUG使用的是十六进制,这里的100相当于十进制的256。

)最后再执行R命令,观看修改后的寄存器值。

H命令的使用H命令作用:计算两个十六进制数的和与差。

在提示符“–”下输入以下命令:H 10 1。

观看命令执行结果。

运行结果的前一个数是计算出来的和,后一个数是计算出来的差。

计算结果均用十六进制形式表示。

D命令的使用D命令作用:显示内存区域的内容。

在提示符“–”下连续执行命令R、D、D。

观看命令执行结果。

前面已经介绍过了,命令R的作用是显示当前寄存器的值。

而命令D的作用是显示内存区域的内容,最左边是内存的起始地址,中间以十六进制的形式显示内存值,最右边是以ASCII码的形式显示内存值。

DEBUG 使用教程 查错 排错 debug 形式 大全

DEBUG 使用教程 查错 排错 debug 形式 大全

1.项目报错,即eclipse里面项目工程有红叉eclipse中打开Problems视图,window->show view->other->General->Problems通过Problems视图中的错误信息,找到错误源(有可能是java文件,或者(xml,有可能是1.xml有错;2.含有错误字符(比如从word复制过来);3.假报)buildpath -> eclipse中工程,右键->Build Path-> Configure Build path -> Libraries选项卡察看JRE System Library(引入jdk自带包0),Server Runtime(引入jsp/servlet实现包,比如Apache Tomcat V6.0(这个是window->preferences->server下定义的Runtime Environment对应))Web App Libraries(包含了eclipse中项目工程自带的WEB-INF/lib 下引入的jar包)junit(调试用,不一定需要)User Library(一般eclipse使用者把自己引入的jar包放在一起,定义一个library,在eclipse中引用)2.项目启动,控制台报错察看控制台错误信息可能错误信息包括:1.session factory(可能是hibernate的实体类定义错误), 控制台一般看到dao,sessionFactory,hibernate的关键字eg.Caused by: org.hibernate.PropertyNotFoundException: Could not find a getter for name1 in class demo.ssh2.model.Roleatorg.hibernate.property.BasicPropertyAccessor.createGetter(BasicProperty Accessor.java:306)atorg.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAc cessor.java:299)at org.hibernate.mapping.Property.getGetter(Property.java:294)atorg.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEn tityTuplizer.java:300)atorg.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTu plizer.java:141)atorg.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.j ava:78)... 55 more2.bean定义错误,dao,service,action,1.<property name="" ref=""/>中的ref找不到对应的bean 的id从sessionfactory->dao->service->action,前面的错误总能导致出后面的错误eg.比如定义了如下spring配置信息<bean id="sessionFactory" ..../><bean id="baseDao" abstract="true" class="demo.ssh2.dao.BaseHibernateDao"><property name="sessionFactory" ref="sessionFactory1" /></bean>控制台报错org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao' defined in file...(备注:此处省略多少字)Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'sessionFactory1' is definedatorg.springframework.beans.factory.support.DefaultListableBeanFactory.g etBeanDefinition(DefaultListableBeanFactory.java:527)atorg.springframework.beans.factory.support.AbstractBeanFactory.getMer gedLocalBeanDefinition(AbstractBeanFactory.java:1083)atorg.springframework.beans.factory.support.AbstractBeanFactory.doGetB ean(AbstractBeanFactory.java:274)atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:190)atorg.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)... 30 more2.setter方法名和 spring配置文件中的<propertyname="" ref=""/>中的name 不匹配eg.比如定义如下:<bean id="roleService" class="demo.ssh2.service.RoleService"><property name="roleDao" ref="roleDao"/></bean>RoleService中roleDao的setter方法如下public void setRoleDao1(RoleDao roleDao) {this.roleDao = roleDao;}方法setRoleDao1和<property name="roleDao" 不匹配控制台报错:Caused by: org.springframework.beans.NotWritablePropertyException:Invalid property 'roleDao' of bean class [demo.ssh2.service.RoleService]:Bean property 'roleDao' is not writable or has an invalidsetter method.Did you mean 'roleDao1'?atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:1024)atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:900)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:76)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:58)atorg.springframework.beans.factory.support.AbstractAutowireCapableBea nFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.jav a:1358)... 28 more3.缺少setter方法比如配置<bean id="roleService" class="demo.ssh2.service.RoleService"><property name="roleDao" ref="roleDao"/></bean>在类RoleService中没有定义roleDao的setter方法控制台报错:Caused by: org.springframework.beans.NotWritablePropertyException:Invalid property 'roleDao' of bean class [demo.ssh2.service.RoleService]:Bean property 'roleDao' is not writable or has an invalid setter method.Does the parameter type of the setter match the return type of the getter?atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:1024)atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:900)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:76)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:58)atorg.springframework.beans.factory.support.AbstractAutowireCapableBea nFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.jav a:1358)... 28 more3.eclipse缓存问题,更改了文件,部署到web server中的文件仍然旧的servers视图中,先停止server,然后删除servereclipse中点击项目工程,Project->clean->最上面选中Clean Projects selected below->点击ok3.项目运行,控制台报错察看控制台错误信息可能错误信息包括:1.jdbc配置错误(数据库url,用户名,密码)比如jdbc配置文件错误,将ername=root修改为ername=root1页面报错如下:org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection 控制台报错如下:2013-11-20 09:39:25,441 [org.hibernate.util.JDBCExceptionReporter]-[ERROR] Cannot create PoolableConnectionFactory (Access denied for user 'root1'@'localhost'(using password: YES))2.页面访问不到404或页面有异常信息根据访问的url里面的action,找到Action类对应的方法,打个断点(打在方法体内的代码块的第一行)如果不能进入debug视图,表示struts.xml配置文件有问题,页面输入url中的action找不到对应的Action类eg.比如将strus.xml配置名为<action name="role/list",页面访问role/list1.acito页面报错:ng.NoSuchMethodException:demo.ssh2.action.RoleAction.list1()ng.Class.getMethod(Class.java:1605)如果能进入debug视图,表示struts.xml配置文件没有问题,1.一般控制台会有异常栈错误信息eg.比如RoleAction有如下方法public String list(){List<?> list = roleService.getList();ActionContext.getContext().put("roles", list);return "list";}RoleService中getList方法如下public List<?> getList(){throw new RuntimeException();}页面报错:ng.RuntimeExceptiondemo.ssh2.service.RoleService.getList(RoleService.java:13)2.struts2标签或jstl标签使用错误3.页面不能显示出数据,1.action中私有实体类属性没有gettter/setter方法,或者没有使用request.setAttribute,或者使用ActionContext.getContext().put,传值2.struts2标签或jstl标签使用不对,但页面不报错。

DEBUG的使用及调试方法

DEBUG的使用及调试方法

DEBUG的使用及调试方法在软件开发过程中,调试是非常重要的一环。

调试是指通过排除软件中的错误或故障,确定程序的正确性和可靠性的过程。

在调试过程中,开发者需要使用各种工具和技术来定位和解决问题,其中DEBUG是一种常用的调试工具。

1.打印调试信息:在代码中添加打印语句,将关键信息输出到控制台或日志文件中。

这个方法简单直接,可以帮助开发者快速定位问题。

然而,过多的打印语句会对程序的性能造成影响,并且需要手动添加和移除。

2.使用断点:断点是调试器提供的一种功能,可以在代码中设置一个断点,当程序执行到断点时,会暂停执行。

开发者可以在断点处检查变量的值,观察程序的执行流程。

调试器还提供了单步执行、继续执行等功能,可以逐行调试程序。

使用断点可以直观地观察程序的执行过程,快速找到错误。

3.日志记录:使用日志记录可以在代码中记录程序的执行过程和状态,以便后续分析。

使用日志记录可以避免过多的打印语句,同时日志记录可以输出到文件中,便于离线分析。

常见的日志记录框架有log4j、logback等,它们提供了丰富的配置选项,可以方便地控制日志的输出级别和格式。

4.调试工具:调试工具是一种集成了多种调试功能的软件,可以帮助开发者更方便地进行调试。

常见的调试工具有Eclipse、Visual Studio等。

调试工具提供了丰富的调试功能,包括断点设置、变量查看、堆栈跟踪等,可以大大提高调试的效率。

5.远程调试:在分布式系统中,可能需要在远程机器上调试程序。

远程调试是一种通过网络连接到目标机器,对程序进行调试的方法。

远程调试需要在目标机器上开启调试端口,并在调试工具中配置远程调试参数。

远程调试可以在开发者的本地环境中进行调试,避免了在目标机器上进行调试的麻烦。

6.单元测试:单元测试是一种通过编写测试代码来验证程序的正确性的方法。

单元测试可以模拟程序的输入和输出,隔离程序中的错误。

在测试过程中,可以使用断言语句来判断程序的输出是否符合预期。

debug 方法

debug 方法

debug 方法
Debug 是指程序员在编写代码、测试代码或者运行代码时,发现程序出现错误或者不符合预期的结果,需要进行调试并解决问题的过程。

下面是一些常见的 Debug 方法:
1. 日志调试法:通过在代码中添加日志输出,查看程序执行的过程和变量的变化,以帮助在程序出现问题时定位问题所在。

2. 断点调试法:通过在代码中设置断点,让程序执行到断点处暂停,可以查看变量的值,调试逻辑错误和查找内存泄漏等问题。

3. 回溯调试法:如果程序执行过程中发生崩溃或者异常,可以通过回溯调试法查看崩溃的具体原因和位置,以帮助解决问题。

4. 随机调试法:当出现难以复现的问题时,可以通过随机调试法,随机改变程序的输入、代码执行顺序等,来寻找问题所在。

5. 单元测试法:在编写程序时,可以编写单元测试代码,验证程序的功能是否正确,在程序出现问题时,可以通过单元测试找出问题所在。

以上是一些常见的 Debug 方法,它们可以帮助程序员快速定位问题并解决问题,提高程序的质量和稳定性。

jupyter %debug 用法

jupyter %debug 用法

Jupyter是一种交互式计算环境,广泛用于数据分析、机器学习、科学计算等领域。

而在Jupyter中,debug命令是一个非常有用的调试工具,能够帮助用户在程序出错时快速定位问题所在,并进行相应的调试操作。

本文将分析debug命令的用法,帮助读者更好地理解和运用这一功能。

一、debug命令的基本概念debug命令是Jupyter中的一个魔术命令(magicmand),主要用于在程序出错时进入交互式调试模式。

当程序出现异常时,用户可以使用debug命令进入调试模式,查看当前的程序状态,以及进行变量查看、函数调用等操作,从而更好地理解程序的执行过程,找到问题所在。

二、debug命令的使用方法1. 在Jupyter中运行程序时出现异常当在Jupyter中运行程序时出现异常时,可以直接在出现异常的Cell 中使用debug命令,如下所示:```pythondef divide(a, b):return a / bdivide(5, 0)```运行上述代码会出现异常,此时可以在出现异常的Cell中执行debug 命令,进入调试模式。

2. 进入调试模式后的操作使用debug命令进入调试模式后,可以使用一系列命令来进行调试操作,常用的命令包括:- `list`:显示当前程序执行的位置附近的代码- `print`:打印变量的值- `step`:进行单步调试- `next`:执行下一行代码- `return`:执行完当前函数并返回上一层通过这些命令,用户可以在调试模式下逐步查看程序的执行过程,了解变量的取值情况,从而更好地定位问题所在。

三、debug命令的注意事项1. 调试模式下的操作要谨慎在调试模式下,用户可以查看和修改变量的值,执行函数调用等操作,但需要特别注意避免对程序造成不可逆的影响。

对变量进行修改时要谨慎,避免对程序产生意外的影响。

2. 理解调试信息debug命令提供了丰富的调试信息,包括当前的程序位置、变量的值、函数的调用栈等,用户要学会理解和利用这些信息,才能更好地进行调试操作。

Debug的使用方法

Debug的使用方法

Debug的使用方法在软件开发过程中,经常会遇到各种bug和错误。

为了解决这些问题,开发人员需要使用debug工具进行调试。

本文将介绍debug 的使用方法,帮助读者快速定位和修复程序中的错误。

一、什么是debugDebug是一种用于查找和修复程序错误的技术。

通过使用debug 工具,开发人员可以跟踪程序的执行过程,查看变量的值和代码的执行路径,以及定位代码中的错误。

二、常用的debug工具1. IDE集成的debug工具:大多数集成开发环境(IDE)都提供了内置的debug工具,如Visual Studio、Eclipse等。

通过在IDE 中设置断点,开发人员可以逐步执行程序,并在每个断点处查看变量的值和代码的执行路径。

2. 命令行debug工具:除了IDE集成的debug工具,还有一些独立的命令行debug工具,如gdb、lldb等。

这些工具可以通过命令行参数设置断点、查看变量的值等。

三、使用debug工具的基本步骤1. 设置断点:在需要调试的代码行上设置断点。

断点可以是一个代码行,也可以是一个条件语句。

当程序执行到断点时,会暂停执行,并进入debug模式。

2. 执行程序:运行程序,并触发断点。

程序在执行到断点时会暂停,等待开发人员进行调试操作。

3. 查看变量的值:在debug模式中,开发人员可以查看变量的值。

可以逐步执行程序,每次执行一行代码,并在每个断点处查看变量的值。

如果发现变量的值与预期不符,就可以定位问题所在。

4. 跟踪代码的执行路径:在debug模式中,开发人员可以逐步执行程序,查看代码的执行路径。

通过观察代码的执行路径,可以发现代码中的逻辑错误。

5. 修复错误:当定位到错误时,开发人员需要修复错误。

可以通过修改代码、添加条件语句等方式来解决问题。

修复错误后,重新执行程序,验证修复效果。

四、debug技巧和注意事项1. 使用日志输出:在调试过程中,可以通过输出日志信息来跟踪程序的执行。

DEBUG使用方法

DEBUG使用方法

DEBUG使用方法为了解决问题和改进程序,我们经常需要在代码中进行调试。

调试是指通过检查代码的执行过程,找出可能的错误和问题,并修复它们。

在本文中,我们将介绍一些常见的调试技术和工具,帮助您进行有效的调试。

1.打印输出:打印输出是调试的最基本方法之一、通过在代码中插入打印语句,我们可以跟踪代码的执行流程和变量的值。

例如,在关键位置添加`print`语句来输出变量的值,以便了解其当前状态。

这种方法对于追踪代码执行路径和确定错误发生的地点非常有用。

但是,它不适用于大型程序或复杂的问题,因为太多的输出可能会让您迷失在信息中。

2.断点调试:断点调试是一种先进的调试技术,可以暂停程序的执行,以便我们可以检查和修改程序的状态。

通过在代码中设置断点,我们可以在程序执行到该点时暂停执行,并查看变量的值、执行的路径等信息。

在现代集成开发环境(IDE)中,我们可以通过单击代码行号或调试菜单来设置断点。

一旦程序执行到断点位置,调试器将暂停执行,我们可以检查变量的值并逐行执行代码,以便找出问题。

3.单步调试:与断点调试相似,单步调试也允许我们逐行执行代码并检查变量的值。

单步调试是一种逐行执行代码的方法,让我们可以了解代码执行的顺序和路径。

在单步调试中,我们可以逐行执行代码,并在每一步之后检查变量的值和程序状态。

这对于发现代码执行的异常路径、循环错误和边界条件非常有用。

4.调试器:调试器是一种针对软件调试的工具,它可以帮助我们通过提供图形界面和功能来检查程序的状态、执行流程和变量的值。

调试器通常集成在IDE中,提供了单步执行、设置断点、查看变量和堆栈跟踪等功能。

使用调试器,我们可以直观地了解程序的状态,并快速找到问题所在。

5.注释和重构:注释是一种记录代码用途和解释的方法,可以帮助我们理解程序的目的和逻辑。

通过添加注释,我们可以提高代码的可读性,并减少问题的发生。

在调试过程中,我们可以使用注释来解释代码块的用途、关键数据结构和预期输出,以便更好地理解问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.项目报错,即eclipse里面项目工程有红叉eclipse中打开Problems视图,window->show view->other->General->Problems通过Problems视图中的错误信息,找到错误源(有可能是java文件,或者(xml,有可能是 1.xml有错;2.含有错误字符(比如从word复制过来);3.假报)buildpath -> eclipse中工程,右键->Build Path-> Configure Build path -> Libraries选项卡察看JRE System Library(引入jdk自带包0),Server Runtime(引入jsp/servlet实现包,比如Apache Tomcat V6.0(这个是window->preferences->server下定义的Runtime Environment对应))Web App Libraries(包含了eclipse中项目工程自带的WEB-INF/lib 下引入的jar包)junit(调试用,不一定需要)User Library(一般eclipse使用者把自己引入的jar包放在一起,定义一个library,在eclipse中引用)2.项目启动,控制台报错察看控制台错误信息可能错误信息包括:1.session factory(可能是hibernate的实体类定义错误), 控制台一般看到dao,sessionFactory,hibernate的关键字eg.Caused by: org.hibernate.PropertyNotFoundException: Could not find a getter for name1 in class demo.ssh2.model.Roleatorg.hibernate.property.BasicPropertyAccessor.createGetter(BasicProperty Accessor.java:306)atorg.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAc cessor.java:299)atorg.hibernate.mapping.Property.getGetter(Property.java:294)atorg.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEnt ityTuplizer.java:300)atorg.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTu plizer.java:141)atorg.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.ja va:78)... 55 more2.bean定义错误,dao,service,action,1.<property name="" ref=""/>中的ref找不到对应的bean的id从sessionfactory->dao->service->action,前面的错误总能导致出后面的错误eg.比如定义了如下spring配置信息<bean id="sessionFactory" ..../><bean id="baseDao" abstract="true" class="demo.ssh2.dao.BaseHibernateDao"><property name="sessionFactory" ref="sessionFactory1" /></bean>控制台报错org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao' defined in file...(备注:此处省略多少字)Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'sessionFactory1' is definedatorg.springframework.beans.factory.support.DefaultListableBeanFactory.g etBeanDefinition(DefaultListableBeanFactory.java:527)atorg.springframework.beans.factory.support.AbstractBeanFactory.getMerg edLocalBeanDefinition(AbstractBeanFactory.java:1083)atorg.springframework.beans.factory.support.AbstractBeanFactory.doGetB ean(AbstractBeanFactory.java:274)atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:190)atorg.springframework.beans.factory.support.BeanDefinitionValueResolver .resolveReference(BeanDefinitionValueResolver.java:322)... 30 more2.setter方法名和spring配置文件中的<property name="" ref=""/>中的name 不匹配eg.比如定义如下:<bean id="roleService" class="demo.ssh2.service.RoleService"><property name="roleDao" ref="roleDao"/></bean>RoleService中roleDao的setter方法如下public void setRoleDao1(RoleDao roleDao) {this.roleDao = roleDao;}方法setRoleDao1和<property name="roleDao" 不匹配控制台报错:Caused by: org.springframework.beans.NotWritablePropertyException:Invalid property 'roleDao' of bean class[demo.ssh2.service.RoleService]:Bean property 'roleDao' is not writable or has an invalid setter method.Did you mean 'roleDao1'?atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:1024)atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:900)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:76)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:58)atorg.springframework.beans.factory.support.AbstractAutowireCapableBea nFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.jav a:1358)... 28 more3.缺少setter方法比如配置<bean id="roleService" class="demo.ssh2.service.RoleService"><property name="roleDao" ref="roleDao"/></bean>在类RoleService中没有定义roleDao的setter方法控制台报错:Caused by: org.springframework.beans.NotWritablePropertyException:Invalid property 'roleDao' of bean class [demo.ssh2.service.RoleService]:Bean property 'roleDao' is not writable or has an invalid setter method.Does the parameter type of the setter match the return type of the getter?atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:1024)atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:900)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:76)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:58)atorg.springframework.beans.factory.support.AbstractAutowireCapableBea nFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.jav a:1358)... 28 more3.eclipse缓存问题,更改了文件,部署到web server中的文件仍然旧的servers视图中,先停止server,然后删除servereclipse中点击项目工程,Project->clean->最上面选中Clean Projects selected below->点击ok3.项目运行,控制台报错察看控制台错误信息可能错误信息包括:1.jdbc配置错误(数据库url,用户名,密码)比如jdbc配置文件错误,将ername=root修改为ername=root1页面报错如下:org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection 控制台报错如下:2013-11-20 09:39:25,441 [org.hibernate.util.JDBCExceptionReporter]-[ERROR] Cannot create PoolableConnectionFactory (Access denied for user 'root1'@'localhost' (using password: YES))2.页面访问不到404或页面有异常信息根据访问的url里面的action,找到Action类对应的方法,打个断点(打在方法体内的代码块的第一行)如果不能进入debug视图,表示struts.xml配置文件有问题,页面输入url中的action找不到对应的Action类eg.比如将strus.xml配置名为<action name="role/list",页面访问role/list1.acito页面报错:ng.NoSuchMethodException:demo.ssh2.action.RoleAction.list1()ng.Class.getMethod(Class.java:1605)如果能进入debug视图,表示struts.xml配置文件没有问题,1.一般控制台会有异常栈错误信息eg.比如RoleAction有如下方法public String list(){List<?> list = roleService.getList();ActionContext.getContext().put("roles", list);return "list";}RoleService中getList方法如下public List<?> getList(){throw new RuntimeException();}页面报错:ng.RuntimeExceptiondemo.ssh2.service.RoleService.getList(RoleService.java:13)2.struts2标签或jstl标签使用错误3.页面不能显示出数据,1.action中私有实体类属性没有gettter/setter方法,或者没有使用request.setAttribute,或者使用ActionContext.getContext().put,传值2.struts2标签或jstl标签使用不对,但页面不报错。

相关文档
最新文档