CMP调试记

原创 2005年05月30日 16:55:00
开始调试时间:愚人节12:00
结束调试时间:愚人节后第三天10:46
调试环境:JDK1.4.2
Jboss 3.2.6
Oracle 9i
出错信息:
顺利启动Oracle和Jboss,部署Jar包非常成功,客户端调用后Jboss抛出如下异常:
21:40:58,301 ERROR [LogInterceptor] TransactionRolledbackException in method: pu
blic abstract java.lang.Integer dbaccess.CountCMP.getIncrement() throws java.rmi
.RemoteException, causedBy:java.sql.SQLException: ORA-00936: 缺少表达式

调试过程:手法种种,均遭失败,身心受损

黎明曙光:1.查询Oracle文档关于ORA-00936的信息,得到如下解释:
ORA-00936: Cause: A required part of a clause or expression has been omitted. For example, a SELECT statement may have been entered without a list of columns or expressions or with an incomplete expression. This message is also issued in cases where a reserved word is misused, as in SELECT TABLE.
2.在jboss的日志中查找到如下的关于SQL语句的信息
2005-04-03 10:18:18,194 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.CountCMP] Executing SQL: SELECT Increment FROM COUNT WHERE (Name=?)
3.把"SELECT Increment FROM COUNT WHERE (Name=?)"语句在Oracle SQlplus中执行同样得到如下结果:ORA-00936: 缺少表达式

解决方法: 怀疑Icrement是Oracle的保留字,把它改为MyIncrement,并在jbosscmp-jdbc.xml中做相应修改,打包部署重新启动Jboss服务器。

怀着再次遭受失败的心理准备又一次启动客户端程序,接下来见到了三天来第一次Jboss未抛异常的神奇画面,内心狂爽无比,一口气连续执行了20遍......
这次Bug调试感受颇深,肺腑之言碰到bug一定要寻根究底,抓住一切可以利用的信息,以免像我一样浪费大量的时间和精力。不过,个人感觉调试成功后的成就感和调试时间成正比:)

二进制炸弹(binary bomb)——计算机体系与组成结构作业

这是来自于CS:APP的一个著名实验“拆解二进制炸弹”,也是我们的计算机组成与体系结构课程的家庭作业 这个实验也让我学会了怎么进行反汇编和使用GDB调试程序 解决问题的过程如下:Phase_1...
  • tsinghua_clannad
  • tsinghua_clannad
  • 2017年04月03日 12:16
  • 945

python3中替换python2中cmp函数

本文地址:http://blog.csdn.net/sushengmiyan/article/details/11332589 作者:sushengmiyan 在python2中我们经常会使用cmp函...
  • qq_24918869
  • qq_24918869
  • 2016年08月10日 20:20
  • 9706

CMP指令和标志位

      汇编中的CMP指令是一条比较指令,对比两个操作数的大小,但是计算机并不理解大小,它只是对两个操作数进行了一次减法操作,然后对一些标志位进行了一些逻辑运算来判断哪个数大,涉及的标志位有如下一...
  • magictong
  • magictong
  • 2010年03月23日 00:10
  • 9123

C++ 中sort 函数及 cmp 自定义规则的使用

需要头文件 #include using namespace std; 这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一...
  • u011521976
  • u011521976
  • 2013年11月30日 23:38
  • 4756

浅谈C/C++排序函数中cmp()比较函数的写法

首先,我们来谈谈大名鼎鼎的void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *)); 它属于C...
  • Lionel_D
  • Lionel_D
  • 2014年12月05日 12:46
  • 14511

ARM指令CMP详解

1、加减指令     add  r1, r2, #1    /*r1 = r2 + 1 */     sub  r1, r2, #1    /*r1 = r2 - 1 */ 2、adr指...
  • zhouqt
  • zhouqt
  • 2017年10月07日 22:49
  • 638

Android自学笔记-14-意图(Intent)

Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯。Android中的Intent可以理解为不同组件通信的媒介或者信使。...
  • mengxiangyue
  • mengxiangyue
  • 2014年04月23日 22:48
  • 2172

#note#priority_queue的cmp对象写法

闲话用priority_queue的时候,不知道写出来的cmp对象与自己要的有限序列关系,于是做了个小实验。实验代码#include #include using namespace std;str...
  • LoHiauFung
  • LoHiauFung
  • 2016年12月06日 13:25
  • 594

sort()/qsort()函数的用法及cmp比较函数的写法

转自:白马王的博客 一、STL中的sort函数: 头文件:#include Tips:    STL中的sort函数有两种:    templateRanIt>        void sort...
  • Jessie_is_Gemini
  • Jessie_is_Gemini
  • 2016年03月01日 20:59
  • 2294

关于汇编语言中cmp指令的小笔记

cmp是比较指令,cmp的功能是相当于减法指令,只是不保存结果.cmp指令执行后,将对标志寄存器产生影响.其他相关指令通过识别这些被影响的标志寄存器来得知比较结果. cmp指令格式: cmp...
  • zer1123
  • zer1123
  • 2016年12月31日 12:38
  • 4415
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CMP调试记
举报原因:
原因补充:

(最多只允许输入30个字)