怎么解决LINUX堆栈溢出内存的问题?
一般是由于数组指针访问越界;
或者是野指针造成
解决的办法:可以将代码按功能段,一段一段测试,
//测试一块代码时,先注释掉其它代码
找出错误出现的地方,修正
如果,因为程序里使用的堆栈大小大于默认的造成出错
需要修改默认的堆栈大小的值
1linux下调试core的命令,察看堆栈状态命令?
比方说,你要调试的core文件是 core.xxx,原始可执行文件是 a.exe先用 gdb a.exe 进入 gdb,在gdb命令行下 执行core-file /path/to/core.xxx然后即可调试core dump文件了,比如用 bt 等
我想做linux的磁盘io性能测试,有什么好的工具和方法推荐吗,感谢?
首先,了解些磁盘的知识
现在常用的磁盘有多种,如机械硬盘、固态硬盘等。
不同种类磁盘有其各自特性,比如机械硬盘外磁道比内磁道快。
其次,可以了解下Linux的io堆栈
比如,了解数据真正落盘跟缓存在内存中的区别。
不同版本内核,io堆栈会有更新换代而稍有不同。具体参考内核作者的网站:https://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram
具体Io测试工具不少,这里推荐几个我用的工具
简单粗暴的工具:fio (
https://fio.readthedocs.io/en/latest/fio_doc.html)
复杂一些同时可以图形显示测试结果的工具:nmon (https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power%20Systems/page/nmon)。
nmon的可视化工具有:nmonchart,NMONVisualize需要跟踪io读写,可以使用blktrace,跟踪每个io请求对应的扇区号。
除了fio测试工具和iostat,其他工具的测试结果基本上都是扯淡,跟直观感受距离太远,尤其是随机IO。
而且测试结果都不能反映真实负载,如果依据这个结果去预估负载,更是差的远。