Redian新闻
>
Eclipse 里如何 debug in a big while loop
avatar
Eclipse 里如何 debug in a big while loop# Java - 爪哇娇娃
l*o
1
多余的流星
http://www.songtaste.com/song/1304681/
你会是什么样子 长发还是短发
你会有什么坚持 梦想还是偏执
我看过你的背影 清晰却不熟悉
我记得你的眼神 想靠近 却又远离
你不该来找我 你早就有你的生活
你不该来爱我 我只剩一个小角落
你不该来骗我 剩下的时间去安慰我
你不该和他 手牵手 经过
我不想周旋在 三个人的梦里
这味道 那么熟悉
做了梦 可是醒了之后
只剩 叹息
清晨的迟疑 傍晚去哪里
夜里的哪颗是你
流星说 它是多余的
所以 陨落
The princess in another world
http://www.songtaste.com/song/1304638/
stand still are you sure who we are
stand close stand near
are you clear what you want show me
trust me close to me tonight...
show us trust us we are the princess in an
avatar
S*k
2
sql 2005
一个column nvarchar(50), 里面的数据:
2007
2008
2007 and 2008
...
select *
from table
where column = '2007'
return 1100 rows
select *
from table
where column like '2007'
return 900 rows
column = '2007' 和 column like '2007' 有什么区别?
avatar
l*0
3
如果确定问题出在一个循环程序里,这个循环很大,很多次,但是也无任何线索,在断
点里无法设 condition 快速到达有问题的地方。难道就只有一次一次的循环,没有什
么技巧帮忙快速定位吗?通常情况下,输入会随着循环的改变而变化。
这应该是一个很常见的问题,谢谢了。
avatar
n*6
4
Some examples.
TABLEA.COLUMNA
'20070101'
@DATA LIKE '2007%'
@DATA = SUBSTRING('20070101', 1, 4)
TABLEB.COLUMNB
'12132007'
LIKE '____2007' *4 underscores
LIKE '%2007'
More
TABLEC.COLUMNC
'03/16/2007'
...
avatar
w*z
5
print

【在 l******0 的大作中提到】
: 如果确定问题出在一个循环程序里,这个循环很大,很多次,但是也无任何线索,在断
: 点里无法设 condition 快速到达有问题的地方。难道就只有一次一次的循环,没有什
: 么技巧帮忙快速定位吗?通常情况下,输入会随着循环的改变而变化。
: 这应该是一个很常见的问题,谢谢了。

avatar
B*g
6
can you post result for
select *
from table
where column = '2007'
except
select *
from table
where column like '2007'

【在 S***k 的大作中提到】
: sql 2005
: 一个column nvarchar(50), 里面的数据:
: 2007
: 2008
: 2007 and 2008
: ...
: select *
: from table
: where column = '2007'
: return 1100 rows

avatar
l*0
7
print 好像不是好办法,大循环,整屏都沾满了。今天发现 breaking point 里面的
hit count 可以帮助解决这个问题,尽管不完美。有点相对于 binary search, 大约估
计一下循环的总数,按照 binary search 设 hit count,很快就能找到问题所在。
还有其他好的方法没有?

【在 w**z 的大作中提到】
: print
avatar
S*k
8
The column was designed to hold customized input from users and not
specific to hold date time string.

Select *
From table
Where col = ‘2007’
Except
Select *
From table
Where col like ‘2007’
The number of returned rows is the difference between two queries. And all
of these records have 2007 in that column.
avatar
w*z
9
print +grep

【在 l******0 的大作中提到】
: print 好像不是好办法,大循环,整屏都沾满了。今天发现 breaking point 里面的
: hit count 可以帮助解决这个问题,尽管不完美。有点相对于 binary search, 大约估
: 计一下循环的总数,按照 binary search 设 hit count,很快就能找到问题所在。
: 还有其他好的方法没有?

avatar
B*g
10
???
can you just post some data from the sql with except?

【在 S***k 的大作中提到】
: The column was designed to hold customized input from users and not
: specific to hold date time string.
:
: Select *
: From table
: Where col = ‘2007’
: Except
: Select *
: From table
: Where col like ‘2007’

avatar
t*h
11
正解

【在 w**z 的大作中提到】
: print +grep
avatar
c*t
12
The difference is likely to be in trailing space.
The = op ignores trailing space, but like does NOT.

【在 S***k 的大作中提到】
: sql 2005
: 一个column nvarchar(50), 里面的数据:
: 2007
: 2008
: 2007 and 2008
: ...
: select *
: from table
: where column = '2007'
: return 1100 rows

avatar
m*r
13
可以加一个match你的问题的condition在loop里面吗?

【在 l******0 的大作中提到】
: print 好像不是好办法,大循环,整屏都沾满了。今天发现 breaking point 里面的
: hit count 可以帮助解决这个问题,尽管不完美。有点相对于 binary search, 大约估
: 计一下循环的总数,按照 binary search 设 hit count,很快就能找到问题所在。
: 还有其他好的方法没有?

avatar
a*t
14
select *
from table
where column = '2007'
and not in
(select *
from table
where column like '2007')
see what's the difference.

【在 S***k 的大作中提到】
: sql 2005
: 一个column nvarchar(50), 里面的数据:
: 2007
: 2008
: 2007 and 2008
: ...
: select *
: from table
: where column = '2007'
: return 1100 rows

avatar
g*g
15
Sometimes I would add a condition check and throw exception, wrap a catch
around it and you can add a debugging point inside the catch. Of course you
can let eclipse debugger break on the exception too.

【在 l******0 的大作中提到】
: 如果确定问题出在一个循环程序里,这个循环很大,很多次,但是也无任何线索,在断
: 点里无法设 condition 快速到达有问题的地方。难道就只有一次一次的循环,没有什
: 么技巧帮忙快速定位吗?通常情况下,输入会随着循环的改变而变化。
: 这应该是一个很常见的问题,谢谢了。

avatar
B*g
16
how can = ignores trailing space?

【在 c**t 的大作中提到】
: The difference is likely to be in trailing space.
: The = op ignores trailing space, but like does NOT.

avatar
f*i
17
1. 如果结果不对:自己设置一个variable counter,然后print of interest
information (and the counter),run problematic,run reference,do diff,然
后根据diff的counter
设condition break point。
2. 如果是crash,设断点,然后ignore big number, say 100000,等crash了看看hit
了多少次,然后ignore that count minus one。

【在 l******0 的大作中提到】
: 如果确定问题出在一个循环程序里,这个循环很大,很多次,但是也无任何线索,在断
: 点里无法设 condition 快速到达有问题的地方。难道就只有一次一次的循环,没有什
: 么技巧帮忙快速定位吗?通常情况下,输入会随着循环的改变而变化。
: 这应该是一个很常见的问题,谢谢了。

avatar
c*t
18
select '' ...
avatar
l*0
19
Eclipse 里调试时怎么用 grep?

【在 w**z 的大作中提到】
: print +grep
avatar
c*t
20
http://support.microsoft.com/kb/316626
SQL Server follows the ANSI/ISO SQL-92 specification (Section 8.2, <
Comparison Predicate>, General rules #3) on how to compare strings with
spaces. The ANSI standard requires padding for the character strings used in
comparisons so that their lengths match before comparing them. The padding
directly affects the semantics of WHERE and HAVING clause predicates and
other Transact-SQL string comparisons. For example, Transact-SQL considers
the strings 'abc' an

【在 B*****g 的大作中提到】
: how can = ignores trailing space?
avatar
l*0
21
经提示,好像可以这样做。我要找的问题是,经过一序列过程后,某个结果不正确,比
如本来 result == 10, 但它却等于 5.这样,我可以设置一个 assert(result!=5),问
题出现时,就知道从哪里找原因了。

【在 m****r 的大作中提到】
: 可以加一个match你的问题的condition在loop里面吗?
avatar
B*g
22
ding

in
padding
operations.

【在 c**t 的大作中提到】
: http://support.microsoft.com/kb/316626
: SQL Server follows the ANSI/ISO SQL-92 specification (Section 8.2, <
: Comparison Predicate>, General rules #3) on how to compare strings with
: spaces. The ANSI standard requires padding for the character strings used in
: comparisons so that their lengths match before comparing them. The padding
: directly affects the semantics of WHERE and HAVING clause predicates and
: other Transact-SQL string comparisons. For example, Transact-SQL considers
: the strings 'abc' an

avatar
l*0
23
Great. Like the suggestion above, probably this is the most efficient way to
go.

you

【在 g*****g 的大作中提到】
: Sometimes I would add a condition check and throw exception, wrap a catch
: around it and you can add a debugging point inside the catch. Of course you
: can let eclipse debugger break on the exception too.

avatar
S*k
24
It is caused by the trailing space.
I used len(col) to check the length. It seems len() also ignore the trailing
space.
Thanks, guys.
avatar
l*0
25
What do you mean by "run problematic,run reference,do diff"?
Never heard of that.

hit

【在 f********i 的大作中提到】
: 1. 如果结果不对:自己设置一个variable counter,然后print of interest
: information (and the counter),run problematic,run reference,do diff,然
: 后根据diff的counter
: 设condition break point。
: 2. 如果是crash,设断点,然后ignore big number, say 100000,等crash了看看hit
: 了多少次,然后ignore that count minus one。

avatar
j*n
26
nice call!

in
padding
operations.

【在 c**t 的大作中提到】
: http://support.microsoft.com/kb/316626
: SQL Server follows the ANSI/ISO SQL-92 specification (Section 8.2, <
: Comparison Predicate>, General rules #3) on how to compare strings with
: spaces. The ANSI standard requires padding for the character strings used in
: comparisons so that their lengths match before comparing them. The padding
: directly affects the semantics of WHERE and HAVING clause predicates and
: other Transact-SQL string comparisons. For example, Transact-SQL considers
: the strings 'abc' an

avatar
l*0
27
再问一个常见的问题,就是在 eclipse 里,如何退回上一步,我发现这样经常需要用
到。想先看看一个方法的最终返回结果,然后如果有必要,再退回去,进到那个
function 里面看个究竟。
为什么这个很有用的 feature 不支持?
avatar
c*t
28
居然没有包子,呵呵

【在 j*****n 的大作中提到】
: nice call!
:
: in
: padding
: operations.

avatar
w*z
29
there is a button called "drop the frame", it will bring you back to the
caller in stack.

【在 l******0 的大作中提到】
: 再问一个常见的问题,就是在 eclipse 里,如何退回上一步,我发现这样经常需要用
: 到。想先看看一个方法的最终返回结果,然后如果有必要,再退回去,进到那个
: function 里面看个究竟。
: 为什么这个很有用的 feature 不支持?

avatar
S*k
30
俺。。。
穷人那。
问问题有没有包子哈?
avatar
l*0
31
That helps, but not "one step back".

【在 w**z 的大作中提到】
: there is a button called "drop the frame", it will bring you back to the
: caller in stack.

avatar
s*e
32
Used to write monte carlo simulation running tens millions of loop times.
Here was what I did. it might not be the best approach.
1.carefully check the logics for culprit. if failed,
2.then run the loop a couple of times and check all the major lines for
possible offenders. if still failed,
3.use bisect method to cut the number of loop times for each check. very
tedious... if still failed.
4.leave it alone and pray...
avatar
g*g
33
You can only drop the existing stack and re-enter, you can't go back one
step.
Virtually every runtime is like that.

【在 l******0 的大作中提到】
: That helps, but not "one step back".
avatar
b*i
34
这个时间机器也许并不是必须的。
假如这个函数里面你想退回去,办法是有的。你好好描述说说你具体需要什么。要非常
具体,也许是有办法的。比如,你想回到呼叫的函数那里看看变量的值什么的。是这样
吗?

【在 l******0 的大作中提到】
: 再问一个常见的问题,就是在 eclipse 里,如何退回上一步,我发现这样经常需要用
: 到。想先看看一个方法的最终返回结果,然后如果有必要,再退回去,进到那个
: function 里面看个究竟。
: 为什么这个很有用的 feature 不支持?

avatar
l*0
36
还有个 eclipse 里面经常遇到的 debugging 问题. 就是在 debug mode 下,有时程序
运行得 abnormally slower than usual. 例如,设置两个 break point, 在第一个完
成后,点击 'resume',它不很快跳到 next break point, 而是运行很长时间,有时1,
2 分钟,很慢。
大家遇到过这种问题没有? 是什么原因
avatar
w*z
37
how big is your heap size for eclipse? It is slow if you don't give enough
memory. try intellij IDE , supposed to be better.

1,

【在 l******0 的大作中提到】
: 还有个 eclipse 里面经常遇到的 debugging 问题. 就是在 debug mode 下,有时程序
: 运行得 abnormally slower than usual. 例如,设置两个 break point, 在第一个完
: 成后,点击 'resume',它不很快跳到 next break point, 而是运行很长时间,有时1,
: 2 分钟,很慢。
: 大家遇到过这种问题没有? 是什么原因

avatar
l*0
38
That size is big enough, more than 1G. I found some discussion on this here,
but the tricks not working for my observation.
http://stackoverflow.com/questions/4591187/running-a-program-in

【在 w**z 的大作中提到】
: how big is your heap size for eclipse? It is slow if you don't give enough
: memory. try intellij IDE , supposed to be better.
:
: 1,

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。