Linux x64 下 Matlab R2013a 300 kb 脚本文件调试的 CPU 占用过高问题的解决办法
(1) 系统+软件版本
CentOS 6.5 (Final), 64 位,内核initramfs-2.6.32-431.5.1.el6.x86_64,
MATLAB Version: 8.1.0.604 (R2013a)
Java 1.6.0_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) 64-Bit Server VM mixed mode
(2) 问题描述
通常在这个环境下,小文件的代码都可以调试通过.
最近,把所有函数集合到一个M文件(332.4 kb),只是简单地设置了几个断点, 运行到断点位置再停止运行, cpu和内存占用都还算正常.
但接下来对m文件的编辑就开始变得非常慢, 甚至是只添加几个单词就会卡住, 一直没有响应, 内存占用不变, 而1/4核CPU的占用高达100%, 只能从系统监视器里杀死进程.
我猜想, Matlab对M文件大小的支持,是不是非常有限? 子函数版本太多也是罪过,想着集成起来可以方便调用和标注,没想到弄巧成拙了...
(3) 解决办法
找到两个解决办法.
一是使用 '-singleCompThread' 参数启动matlab. 亲测可用. 调试编辑都和原来基本一样, 不再卡顿了. 这要感谢水木网友 @RSVP 的耐心解答.
[usr@usr ~]$ matlab -help Usage: matlab [-h|-help] | [-n | -e] [-arch | v=variant | v=arch/variant] [-c licensefile] [-display Xdisplay | -nodisplay] [-nosplash] [-mwvisual visualid] [-debug] [-softwareopengl] [-desktop | -nodesktop | -nojvm] [-r MATLAB_command] [-logfile log] [-Ddebugger [options]] -h|-help - Display arguments. -n - Display final environment variables, arguments, and other diagnostic information. MATLAB is not run. -e - Display ALL the environment variables and their values to standard output. MATLAB is not run. If the exit status is not 0 on return then the variables and values may not be correct. -arch - Start MATLAB assuming architecture arch. v=variant - Start the version of MATLAB found in bin/glnxa64/variant instead of bin/glnxa64. v=arch/variant - Start the version of MATLAB found in bin/arch/variant instead of bin/glnxa64. -c licensefile - Set location of the license file that MATLAB should use. It can have the form port@host or be a colon separated list of license files. The LM_LICENSE_FILE and MLM_LICENSE_FILE environment variables will be ignored. -display Xdisplay - Send X commands to X server display, Xdisplay. -nodisplay - Do not display any X commands. The MATLAB desktop will not be started. However, unless -nojvm is also provided the Java virtual machine will be started. -nosplash - Do not display the splash screen during startup. -mwvisual visualid - The default X visual to use for figure windows. -debug - Provide debugging information especially for X based problems. -desktop - Allow the MATLAB desktop to be started by a process without a controlling terminal. This is usually a required command line argument when attempting to start MATLAB from a window manager menu or desktop icon. -nodesktop - Do not start the MATLAB desktop. Use the current terminal for commands. The Java virtual machine will be started. -singleCompThread - Limit MATLAB to a single computational thread. By default, MATLAB makes use of the multithreading capabilities of the computer on which it is running. -nojvm - Shut off all Java support by not starting the Java virtual machine. In particular the MATLAB desktop will not be started. -jdb [port] - Enable remote Java debugging on port (default 4444) -r MATLAB_command - Start MATLAB and execute the MATLAB_command. -logfile log - Make a copy of any output to the command window in file log. This includes all crash reports. -Ddebugger [options] - Start debugger to debug MATLAB. -nouserjavapath - Ignore custom javaclasspath.txt and javalibrarypath.txt files.
二是使用外部编辑器 Emacs 来编辑和调试. 调试采用 matlab-shell mode, 稍微复杂一些, 传统的快捷键都不怎么能用, 只能用命令设置断点和运行, 涉及到的命令有: dbstop & dbstatus & dbcont & dbquit 等, 可参阅这篇博客<MATLAB的简单debug功能>. 在调试过程中编辑脚本也没问题, matlab 占用也小. 有关 Emacs 多窗口之间切换的快捷键可以参考 学习Emacs系列教程(十):多窗口.
全文完.
- Linux系统输入输出函数
- linux 命令route add default dev eth0和route add default gw * dev eth0的区别?
- Linux0.11内核--系统中断处理程序int 0x80实现原理
- linux 文件系统的管理 (硬盘) 工作原理
- linux IP地址设置方式 centos6.5
- LVS专题: NAT和DR模型实现Web负载均衡
- CentOS7中禁用IPV6
- 完全用linux工作,放弃windows
- ssh客户端CRT连接linux使用技巧
- CentOS环境搭建(JDK安装、mysql安装、hadoop安装等)
- centos7安装hadoop
- linux下gcc默认搜索头文件及库文件的路径
- linux制作livecd
- How to install OpenBazaar Server in CentOS7
- Linux启动Eclipse时指定jdk的三种方法
- Centos 7 安装Mono和Jexus 默认目录安装 (一)
- Linux chmod 修改多个文件权限
- CentOS 7.0如何将iptables作为防火墙(默认使用的是firewall作为防火墙)
- 删除centos更新后多余的内核
- Linux Notifier Chains