当前位置: 技术问答>linux和unix
在kdevelop3中调试的古怪问题
来源: 互联网 发布时间:2015-10-08
本文导语: 这里我给出详细的过程,请帮忙看看,谢谢! 1。用kdevelop建立一个"Simple KDE Application "工程,名字叫Test 2。“文件”->“新建”->“dialog ui”,名字叫dlg 3。在kdevelop里面,右键点击dlg.ui,选择用"Qt"打开 4。现在进入Qt...
这里我给出详细的过程,请帮忙看看,谢谢!
1。用kdevelop建立一个"Simple KDE Application "工程,名字叫Test
2。“文件”->“新建”->“dialog ui”,名字叫dlg
3。在kdevelop里面,右键点击dlg.ui,选择用"Qt"打开
4。现在进入Qt了,在dlg上面放一个按钮,在dlg里面新建一个slot,名字叫newslot(),Qt会自动产生一个文件dlg.ui.h,在newslot()里面添加这么几句int i; i=0; i=1; i=2; 即可。
5。把按钮与newslot()连起来。保存,然后退出Qt。
6。现在回到kdevelop,可以看到有dlg.ui.h,打开dlg.ui.h,在i=0;处设置断点。
7。打开main.cpp,在里面添加include "dlg.h"
把Test *mainWin = 0;改为Form1 *mainWin = 0;
把mainWin = new Test();改为mainWin = new Form1();
8。编译。发现编译成功。
9。在debug状态下运行。看到刚才做的对话框。点击那个按钮,光标停在断点i=0;处。
10。观察变量i的值。使用单步运行,发现i=0;i=1;可以正确看到i的值,而i=2却提示"No symbol i"。我如果在i=2;后面添加i=3;, 那么i=2这句可以看到值,而i=3这句就看不到了。真FT!!
而且,我在观察汇编的时候,发现i=0,i=1,i=2,i=3每个都正确对应有汇编语句,但i=3却偏偏不执行。
这是怎么回事?
请大家帮忙!
1。用kdevelop建立一个"Simple KDE Application "工程,名字叫Test
2。“文件”->“新建”->“dialog ui”,名字叫dlg
3。在kdevelop里面,右键点击dlg.ui,选择用"Qt"打开
4。现在进入Qt了,在dlg上面放一个按钮,在dlg里面新建一个slot,名字叫newslot(),Qt会自动产生一个文件dlg.ui.h,在newslot()里面添加这么几句int i; i=0; i=1; i=2; 即可。
5。把按钮与newslot()连起来。保存,然后退出Qt。
6。现在回到kdevelop,可以看到有dlg.ui.h,打开dlg.ui.h,在i=0;处设置断点。
7。打开main.cpp,在里面添加include "dlg.h"
把Test *mainWin = 0;改为Form1 *mainWin = 0;
把mainWin = new Test();改为mainWin = new Form1();
8。编译。发现编译成功。
9。在debug状态下运行。看到刚才做的对话框。点击那个按钮,光标停在断点i=0;处。
10。观察变量i的值。使用单步运行,发现i=0;i=1;可以正确看到i的值,而i=2却提示"No symbol i"。我如果在i=2;后面添加i=3;, 那么i=2这句可以看到值,而i=3这句就看不到了。真FT!!
而且,我在观察汇编的时候,发现i=0,i=1,i=2,i=3每个都正确对应有汇编语句,但i=3却偏偏不执行。
这是怎么回事?
请大家帮忙!
|
我认为还是跟一定程度的优化有关,比如你的CPU动态优化机制发现最后一个i=3在别的代码中并没有使用这个变量,执行他没有什么实际意义,而前面几行代码因为不是变量的最后引用,所以还会影响程序,顺利执行,所以我推测,编译优化不是愿因,处理器优化倒有可能了。
|
我也用Kdevelop,kdbg还很多缺陷,再做方便点就好了,查找源代码太因难了。