• 3993阅读
  • 7回复

QT在linux上使用的问题 [复制链接]

上一主题 下一主题
离线cyberpunker
 

只看楼主 倒序阅读 楼主  发表于: 2014-11-03

用QT编写了一个GUI的程序,
在windows win7 x64下,用的是从5.3.2 源码编译的静态库,运行没有问题
然后向linux ubuntu x64移植,在linux下同样使用从5.3.2源码编译的静态库,编译OK,也能启动,但是运行时进行某一个操作时直接崩掉,
界面代码在QT Creator中重新编译,运行OK,

动态库与静态库在功能上会有差别吗?
我对QT是新手,理解不够,代码应该也写得有问题,但这样的问题怎么去考虑它呢?


离线uidab

只看该作者 1楼 发表于: 2014-11-04
找出崩溃的代码贴出来。这样提问很难给出准确的回答。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线cyberpunker

只看该作者 2楼 发表于: 2014-11-04


代码不好贴,描述一下吧,

一个MDI的程序,

一个subwindow代表一个设备,在程序启动的时候,有多少个设备,就有多少个subwindow创建,

但是都hide, 直到点击设备所代表的按钮, 才把对话框show出来,代表设备打开。

设备的开、闭都是对subwindow进行 show ,hide 操作,


代码在windows上运行良好,

但在linux上,程序启动后,点击按钮,对应subwindow执行show的时候,程序就崩掉,

假如我把mainwindow 的尺寸在启动时候缩小到某一个尺寸, 那么点击按钮subwindow执行show的时候,程序不会崩掉,但是滚动mdiarea的滑动条时,程序又崩掉,

如果用QT creator 编译程序,程序又运行良好,


离线dbzhang800

只看该作者 3楼 发表于: 2014-11-04
像这种莫名奇妙的问题,通常都是用户代码中的BUG导致的(有时是有Qt的BUG导致的)。

无论哪种情况,都需要你自己去调试程序,找到问题是哪一行或 那几行代码导致的。

然后
如果是你的问题,改正它。
如果不是,你需要写个最简单的程序来专门测试那几行代码(这种程序,一般都是10几行代码量,长一点,几十行的代码,极少需要上百行的代码),如果可以重现问题,那就可以向qt官方提交BUG了。
离线cyberpunker

只看该作者 4楼 发表于: 2014-11-04
回 dbzhang800 的帖子
dbzhang800:像这种莫名奇妙的问题,通常都是用户代码中的BUG导致的(有时是有Qt的BUG导致的)。
无论哪种情况,都需要你自己去调试程序,找到问题是哪一行或 那几行代码导致的。
然后
....... (2014-11-04 16:25) 



问题是,这样的问题怎么去调试,

就执行到 show 出错,然后能怎么办呢?


  
离线dbzhang800

只看该作者 5楼 发表于: 2014-11-04
回 cyberpunker 的帖子
cyberpunker:问题是,这样的问题怎么去调试,
....... (2014-11-04 22:18) 

调试也就是加断点,单步,写LOG 什么的

如果你确定是show() 那行代码导致的崩溃,就写个最短的包含show() 的测试程序,看看是否可以重现。如果可以重现,懒得话,可以直接向官方提交bug,勤快点,就是找到解决方案,向官方提交patch。如果不能重现,继续调试。
离线cyberpunker

只看该作者 6楼 发表于: 2014-11-05
回 dbzhang800 的帖子
dbzhang800:调试也就是加断点,单步,写LOG 什么的
如果你确定是show() 那行代码导致的崩溃,就写个最短的包含show() 的测试程序,看看是否可以重现。如果可以重现,懒得话,可以直接向官方提交bug,勤快点,就是找到解决方案,向官方提交patch。如果不能重现,继续调试。 (2014-11-04 22:47) 



   有没有官方认可或者大众认可的QT静态库?

  
离线cyberpunker

只看该作者 7楼 发表于: 2014-11-05


感谢版主帮助,

采用二分法找到出错的地方了,

就是一行代码引起的错误,

快速回复
限100 字节
 
上一个 下一个