当前位置: 技术问答>linux和unix
关于在X86跟在PowerPc上运行同样的linux程序结果不一样
来源: 互联网 发布时间:2017-03-26
本文导语: 我最近写了个MAKEFILE工程,先是在PC机虚拟机上测试,在运行的过程中用 top 命令实时观测程序消耗的内存,发现程序运行很稳定,内存也基本上不随着程序运行时间推移而消耗。 但是把程序加入文件系统运...
我最近写了个MAKEFILE工程,先是在PC机虚拟机上测试,在运行的过程中用 top 命令实时观测程序消耗的内存,发现程序运行很稳定,内存也基本上不随着程序运行时间推移而消耗。
但是把程序加入文件系统运行在PowerPc上的时候,发现内存会随着时间推移而慢慢消耗。但是我没有进一步延长测试时间。
大家能否给大概解释一下原因?我需要怎么排查、改进程序?
我接触LINUX没多久,另外,请参看 http://bbs.csdn.net/topics/390289817?page=1#post-392983158
但是把程序加入文件系统运行在PowerPc上的时候,发现内存会随着时间推移而慢慢消耗。但是我没有进一步延长测试时间。
大家能否给大概解释一下原因?我需要怎么排查、改进程序?
我接触LINUX没多久,另外,请参看 http://bbs.csdn.net/topics/390289817?page=1#post-392983158
|
装个valgrind测测你的程序吧。
|
首先,不要怀疑操作系统问题。所以只可能是你代码中有某种隐藏BUG。
其次,x86和pocketPC的一个明显的差异在于前者是小端(little-endian),后者是大端(big-endian).所以你仔细想想有没有出现和字节序有关的操作(如网络方面是否者用了htonl htons ntohs ntohl.还有中间是否有二进制协议解析).排查下这些地方。
最后,如果还是没找出问题的话,那你就用排除法吧,将整个工程一点点去掉一个模块,看是否有问题。这样不断缩小查找范围。
就这些了。祝你好运!
其次,x86和pocketPC的一个明显的差异在于前者是小端(little-endian),后者是大端(big-endian).所以你仔细想想有没有出现和字节序有关的操作(如网络方面是否者用了htonl htons ntohs ntohl.还有中间是否有二进制协议解析).排查下这些地方。
最后,如果还是没找出问题的话,那你就用排除法吧,将整个工程一点点去掉一个模块,看是否有问题。这样不断缩小查找范围。
就这些了。祝你好运!