├── img ├── result.png └── twoChoice.png ├── settings.json ├── README.md ├── launch.json ├── tasks.json └── debug.list /img/result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huahuaxiaomuzhu/debug-my-pintos/HEAD/img/result.png -------------------------------------------------------------------------------- /img/twoChoice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huahuaxiaomuzhu/debug-my-pintos/HEAD/img/twoChoice.png -------------------------------------------------------------------------------- /settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true, 3 | "C_Cpp.formatting": "clangFormat", 4 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 这是用来干什么的? 2 | 3 | : 让你在vscode里调试你的pintos,就像调试一个hello world程序一样简单。 4 | 5 | 效果如图:![result](./img/result.png) 6 | 7 | ## 怎样使用? 8 | 9 | 使用此仓库的前置条件: 10 | 11 | - 首先你得有一个能运行pintos的环境(废话) 12 | - 安装vscode,及C/C++扩展 13 | - 你的bochs支持**nogui**,如果你的bochs不支持nogui,你可以重复教程中的编译安装bochs部分,在执行./configure的时候加上--with-nogui 14 | 15 | **如果你的pintos运行在我的docker内,很遗憾本仓库暂时无法兼容docker内环境。** 16 | 17 | 首先,用vscode打开你的pintos项目,确保src目录在一级目录下。把**launch.json , settings.json , tasks.json**放进**.vscode**目录下。 18 | 19 | 这个时候点左侧的debug按钮,应该能看到两个选项,如图: 20 | 21 | ![twoChoice](./img/twoChoice.png) 22 | 23 | 对于project1,你只需要运行[P1]Debug a Test,在弹出的输入框内输入你想要调试的测试点(如:alarm-priority),在打好断点的情况下,你的vscode就会自动执行好pintos文档里提到的debug步骤,你就可以愉快地查看变量、步进等等了。 24 | 25 | 对于project2,步骤稍微复杂一些。 26 | 27 | 仓库里的debug.list文件是一个示范,每行包含了一条pintos在make check时执行的命令,例如: 28 | 29 | ```shell 30 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/args-none -a args-none -- -q -f run args-none < /dev/null 2> tests/userprog/args-none.errors > tests/userprog/args-none.output 31 | ``` 32 | 33 | 你需要注意的是"-a","-p","run"之后跟随的内容(本例中是"args-none","args-none","args-none"),在弹出的输入框内依次输入这三个,其余操作同project1。 34 | 想要project3的内容请找我击剑或者自己照着前面的推理一下,懒得单独commit了。 35 | 36 | 37 | ## 推荐的使用方法 38 | 39 | - 使用vscode的ssh功能连接本地运行的ubuntu虚拟机 40 | - 使用vscode的ssh功能连接其他服务器 41 | - 如果你的操作系统就是ubuntu的话,直接用就行 42 | -------------------------------------------------------------------------------- /launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "[P1] Debug a Test", 9 | "type": "cppdbg", 10 | "request": "launch", 11 | "program": "${workspaceFolder}/src/threads/build/kernel.o", 12 | "preLaunchTask": "[P1] Run Test in GDB mode", 13 | "miDebuggerServerAddress": "localhost:1234", 14 | "stopAtEntry": false, 15 | "cwd": "${workspaceFolder}/src", 16 | "environment": [], 17 | "externalConsole": false, 18 | "MIMode": "gdb", 19 | "setupCommands": [ 20 | { 21 | "description": "Enable pretty-printing for gdb", 22 | "text": "-enable-pretty-printing", 23 | "ignoreFailures": true 24 | }, 25 | { 26 | "text": "source -v ${workspaceFolder}/src/misc/gdb-macros", 27 | "description": "Import Pintos GDB macros file", 28 | "ignoreFailures": false 29 | } 30 | ], 31 | "symbolLoadInfo": { 32 | "loadAll": true, 33 | "exceptionList": "" 34 | } 35 | }, 36 | { 37 | "name": "[P2] Debug a Test", 38 | "type": "cppdbg", 39 | "request": "launch", 40 | "program": "${workspaceFolder}/src/userprog/build/kernel.o", 41 | "preLaunchTask": "[P2] Run Test in GDB mode", 42 | "miDebuggerServerAddress": "localhost:1234", 43 | "stopAtEntry": false, 44 | "cwd": "${workspaceFolder}/src/userprog/build", 45 | "environment": [], 46 | "externalConsole": false, 47 | "MIMode": "gdb", 48 | "setupCommands": [ 49 | { 50 | "description": "Enable pretty-printing for gdb", 51 | "text": "-enable-pretty-printing", 52 | "ignoreFailures": true 53 | }, 54 | { 55 | "text": "source -v ${workspaceFolder}/src/misc/gdb-macros", 56 | "description": "Import Pintos GDB macros file", 57 | "ignoreFailures": false 58 | }, 59 | { 60 | "text": "loadusersymbols ${workspaceFolder}/src/userprog/build/tests/userprog/${input:test_name}", 61 | "description": "Import user program", 62 | "ignoreFailures": false 63 | } 64 | ], 65 | "symbolLoadInfo": { 66 | "loadAll": true, 67 | "exceptionList": "" 68 | } 69 | } 70 | ], 71 | "inputs": [ 72 | { 73 | "id": "test_name", 74 | "type": "promptString", 75 | "description": "Name of the program containing the symbols (e.g., args-multiple)" 76 | } 77 | ] 78 | } 79 | -------------------------------------------------------------------------------- /tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "[P1] compile", 6 | "type": "shell", 7 | "command": "make", 8 | "options": { 9 | "cwd": "${workspaceFolder}/src/threads" 10 | } 11 | }, 12 | { 13 | "label": "[P2] compile", 14 | "type": "shell", 15 | "command": "make", 16 | "options": { 17 | "cwd": "${workspaceFolder}/src/userprog" 18 | } 19 | }, 20 | { 21 | "label": "[P1] Run Test in GDB mode", 22 | "type": "shell", 23 | "isBackground": true, 24 | "problemMatcher": [ 25 | { 26 | "pattern": [ 27 | { 28 | "regexp": ".", 29 | "file": 1, 30 | "location": 2, 31 | "message": 3 32 | } 33 | ], 34 | "background": { 35 | "activeOnStart": true, 36 | "beginsPattern": ".", 37 | "endsPattern": ".", 38 | } 39 | } 40 | ], 41 | "dependsOn": [ 42 | "[P1] compile" 43 | ], 44 | "command": "pintos -k -T 60 --bochs --gdb -- -q run ${input:test_name}", 45 | "options": { 46 | "cwd": "${workspaceFolder}/src/threads/build" 47 | } 48 | }, 49 | { 50 | "label": "[P2] Run Test in GDB mode", 51 | "type": "shell", 52 | "isBackground": true, 53 | "problemMatcher": [ 54 | { 55 | "pattern": [ 56 | { 57 | "regexp": ".", 58 | "file": 1, 59 | "location": 2, 60 | "message": 3 61 | } 62 | ], 63 | "background": { 64 | "activeOnStart": true, 65 | "beginsPattern": ".", 66 | "endsPattern": ".", 67 | } 68 | } 69 | ], 70 | "dependsOn": [ 71 | "[P2] compile" 72 | ], 73 | "command": "pintos -k -T 60 --bochs --gdb --filesys-size=2 -p tests/userprog/${input:prog_name} -a ${input:prog_name} -- -q -f run '${input:args}'", 74 | "options": { 75 | "cwd": "${workspaceFolder}/src/userprog/build" 76 | } 77 | } 78 | ], 79 | "inputs": [ 80 | { 81 | "id": "test_name", 82 | "type": "promptString", 83 | "description": "Name of the Test to Debug" 84 | }, 85 | { 86 | "id": "prog_name", 87 | "type": "promptString", 88 | "description": "Name of the Program to load for debugging (e.g., args-multiple)", 89 | "default": "" 90 | }, 91 | { 92 | "id": "args", 93 | "type": "promptString", 94 | "description": "Task passed to Pintos (e.g., args-multiple some arguments for you!)", 95 | } 96 | ] 97 | } 98 | -------------------------------------------------------------------------------- /debug.list: -------------------------------------------------------------------------------- 1 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/args-none -a args-none -- -q -f run args-none < /dev/null 2> tests/userprog/args-none.errors > tests/userprog/args-none.output 2 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/args-single -a args-single -- -q -f run 'args-single onearg' < /dev/null 2> tests/userprog/args-single.errors > tests/userprog/args-single.output 3 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/args-multiple -a args-multiple -- -q -f run 'args-multiple some arguments for you!' < /dev/null 2> tests/userprog/args-multiple.errors > tests/userprog/args-multiple.output 4 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/args-many -a args-many -- -q -f run 'args-many a b c d e f g h i j k l m n o p q r s t u v' < /dev/null 2> tests/userprog/args-many.errors > tests/userprog/args-many.output 5 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/args-dbl-space -a args-dbl-space -- -q -f run 'args-dbl-space two spaces!' < /dev/null 2> tests/userprog/args-dbl-space.errors > tests/userprog/args-dbl-space.output 6 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/sc-bad-sp -a sc-bad-sp -- -q -f run sc-bad-sp < /dev/null 2> tests/userprog/sc-bad-sp.errors > tests/userprog/sc-bad-sp.output 7 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/sc-bad-arg -a sc-bad-arg -- -q -f run sc-bad-arg < /dev/null 2> tests/userprog/sc-bad-arg.errors > tests/userprog/sc-bad-arg.output 8 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/sc-boundary -a sc-boundary -- -q -f run sc-boundary < /dev/null 2> tests/userprog/sc-boundary.errors > tests/userprog/sc-boundary.output 9 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/sc-boundary-2 -a sc-boundary-2 -- -q -f run sc-boundary-2 < /dev/null 2> tests/userprog/sc-boundary-2.errors > tests/userprog/sc-boundary-2.output 10 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/sc-boundary-3 -a sc-boundary-3 -- -q -f run sc-boundary-3 < /dev/null 2> tests/userprog/sc-boundary-3.errors > tests/userprog/sc-boundary-3.output 11 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/halt -a halt -- -q -f run halt < /dev/null 2> tests/userprog/halt.errors > tests/userprog/halt.output 12 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/exit -a exit -- -q -f run exit < /dev/null 2> tests/userprog/exit.errors > tests/userprog/exit.output 13 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/create-normal -a create-normal -- -q -f run create-normal < /dev/null 2> tests/userprog/create-normal.errors > tests/userprog/create-normal.output 14 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/create-empty -a create-empty -- -q -f run create-empty < /dev/null 2> tests/userprog/create-empty.errors > tests/userprog/create-empty.output 15 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/create-null -a create-null -- -q -f run create-null < /dev/null 2> tests/userprog/create-null.errors > tests/userprog/create-null.output 16 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/create-bad-ptr -a create-bad-ptr -- -q -f run create-bad-ptr < /dev/null 2> tests/userprog/create-bad-ptr.errors > tests/userprog/create-bad-ptr.output 17 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/create-long -a create-long -- -q -f run create-long < /dev/null 2> tests/userprog/create-long.errors > tests/userprog/create-long.output 18 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/create-exists -a create-exists -- -q -f run create-exists < /dev/null 2> tests/userprog/create-exists.errors > tests/userprog/create-exists.output 19 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/create-bound -a create-bound -- -q -f run create-bound < /dev/null 2> tests/userprog/create-bound.errors > tests/userprog/create-bound.output 20 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/open-normal -a open-normal -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run open-normal < /dev/null 2> tests/userprog/open-normal.errors > tests/userprog/open-normal.output 21 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/open-missing -a open-missing -- -q -f run open-missing < /dev/null 2> tests/userprog/open-missing.errors > tests/userprog/open-missing.output 22 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/open-boundary -a open-boundary -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run open-boundary < /dev/null 2> tests/userprog/open-boundary.errors > tests/userprog/open-boundary.output 23 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/open-empty -a open-empty -- -q -f run open-empty < /dev/null 2> tests/userprog/open-empty.errors > tests/userprog/open-empty.output 24 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/open-null -a open-null -- -q -f run open-null < /dev/null 2> tests/userprog/open-null.errors > tests/userprog/open-null.output 25 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/open-bad-ptr -a open-bad-ptr -- -q -f run open-bad-ptr < /dev/null 2> tests/userprog/open-bad-ptr.errors > tests/userprog/open-bad-ptr.output 26 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/open-twice -a open-twice -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run open-twice < /dev/null 2> tests/userprog/open-twice.errors > tests/userprog/open-twice.output 27 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/close-normal -a close-normal -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run close-normal < /dev/null 2> tests/userprog/close-normal.errors > tests/userprog/close-normal.output 28 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/close-twice -a close-twice -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run close-twice < /dev/null 2> tests/userprog/close-twice.errors > tests/userprog/close-twice.output 29 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/close-stdin -a close-stdin -- -q -f run close-stdin < /dev/null 2> tests/userprog/close-stdin.errors > tests/userprog/close-stdin.output 30 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/close-stdout -a close-stdout -- -q -f run close-stdout < /dev/null 2> tests/userprog/close-stdout.errors > tests/userprog/close-stdout.output 31 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/close-bad-fd -a close-bad-fd -- -q -f run close-bad-fd < /dev/null 2> tests/userprog/close-bad-fd.errors > tests/userprog/close-bad-fd.output 32 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/read-normal -a read-normal -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run read-normal < /dev/null 2> tests/userprog/read-normal.errors > tests/userprog/read-normal.output 33 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/read-bad-ptr -a read-bad-ptr -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run read-bad-ptr < /dev/null 2> tests/userprog/read-bad-ptr.errors > tests/userprog/read-bad-ptr.output 34 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/read-boundary -a read-boundary -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run read-boundary < /dev/null 2> tests/userprog/read-boundary.errors > tests/userprog/read-boundary.output 35 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/read-zero -a read-zero -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run read-zero < /dev/null 2> tests/userprog/read-zero.errors > tests/userprog/read-zero.output 36 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/read-stdout -a read-stdout -- -q -f run read-stdout < /dev/null 2> tests/userprog/read-stdout.errors > tests/userprog/read-stdout.output 37 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/read-bad-fd -a read-bad-fd -- -q -f run read-bad-fd < /dev/null 2> tests/userprog/read-bad-fd.errors > tests/userprog/read-bad-fd.output 38 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/write-normal -a write-normal -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run write-normal < /dev/null 2> tests/userprog/write-normal.errors > tests/userprog/write-normal.output 39 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/write-bad-ptr -a write-bad-ptr -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run write-bad-ptr < /dev/null 2> tests/userprog/write-bad-ptr.errors > tests/userprog/write-bad-ptr.output 40 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/write-boundary -a write-boundary -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run write-boundary < /dev/null 2> tests/userprog/write-boundary.errors > tests/userprog/write-boundary.output 41 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/write-zero -a write-zero -p ../../tests/userprog/sample.txt -a sample.txt -- -q -f run write-zero < /dev/null 2> tests/userprog/write-zero.errors > tests/userprog/write-zero.output 42 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/write-stdin -a write-stdin -- -q -f run write-stdin < /dev/null 2> tests/userprog/write-stdin.errors > tests/userprog/write-stdin.output 43 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/write-bad-fd -a write-bad-fd -- -q -f run write-bad-fd < /dev/null 2> tests/userprog/write-bad-fd.errors > tests/userprog/write-bad-fd.output 44 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/exec-once -a exec-once -p tests/userprog/child-simple -a child-simple -- -q -f run exec-once < /dev/null 2> tests/userprog/exec-once.errors > tests/userprog/exec-once.output 45 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/exec-arg -a exec-arg -p tests/userprog/child-args -a child-args -- -q -f run exec-arg < /dev/null 2> tests/userprog/exec-arg.errors > tests/userprog/exec-arg.output 46 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/exec-bound -a exec-bound -p tests/userprog/child-args -a child-args -- -q -f run exec-bound < /dev/null 2> tests/userprog/exec-bound.errors > tests/userprog/exec-bound.output 47 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/exec-bound-2 -a exec-bound-2 -- -q -f run exec-bound-2 < /dev/null 2> tests/userprog/exec-bound-2.errors > tests/userprog/exec-bound-2.output 48 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/exec-bound-3 -a exec-bound-3 -- -q -f run exec-bound-3 < /dev/null 2> tests/userprog/exec-bound-3.errors > tests/userprog/exec-bound-3.output 49 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/exec-multiple -a exec-multiple -p tests/userprog/child-simple -a child-simple -- -q -f run exec-multiple < /dev/null 2> tests/userprog/exec-multiple.errors > tests/userprog/exec-multiple.output 50 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/exec-missing -a exec-missing -- -q -f run exec-missing < /dev/null 2> tests/userprog/exec-missing.errors > tests/userprog/exec-missing.output 51 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/exec-bad-ptr -a exec-bad-ptr -- -q -f run exec-bad-ptr < /dev/null 2> tests/userprog/exec-bad-ptr.errors > tests/userprog/exec-bad-ptr.output 52 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/wait-simple -a wait-simple -p tests/userprog/child-simple -a child-simple -- -q -f run wait-simple < /dev/null 2> tests/userprog/wait-simple.errors > tests/userprog/wait-simple.output 53 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/wait-twice -a wait-twice -p tests/userprog/child-simple -a child-simple -- -q -f run wait-twice < /dev/null 2> tests/userprog/wait-twice.errors > tests/userprog/wait-twice.output 54 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/wait-killed -a wait-killed -p tests/userprog/child-bad -a child-bad -- -q -f run wait-killed < /dev/null 2> tests/userprog/wait-killed.errors > tests/userprog/wait-killed.output 55 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/wait-bad-pid -a wait-bad-pid -- -q -f run wait-bad-pid < /dev/null 2> tests/userprog/wait-bad-pid.errors > tests/userprog/wait-bad-pid.output 56 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/multi-recurse -a multi-recurse -- -q -f run 'multi-recurse 15' < /dev/null 2> tests/userprog/multi-recurse.errors > tests/userprog/multi-recurse.output 57 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/multi-child-fd -a multi-child-fd -p ../../tests/userprog/sample.txt -a sample.txt -p tests/userprog/child-close -a child-close -- -q -f run multi-child-fd < /dev/null 2> tests/userprog/multi-child-fd.errors > tests/userprog/multi-child-fd.output 58 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/rox-simple -a rox-simple -- -q -f run rox-simple < /dev/null 2> tests/userprog/rox-simple.errors > tests/userprog/rox-simple.output 59 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/rox-child -a rox-child -p tests/userprog/child-rox -a child-rox -- -q -f run rox-child < /dev/null 2> tests/userprog/rox-child.errors > tests/userprog/rox-child.output 60 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/rox-multichild -a rox-multichild -p tests/userprog/child-rox -a child-rox -- -q -f run rox-multichild < /dev/null 2> tests/userprog/rox-multichild.errors > tests/userprog/rox-multichild.output 61 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/bad-read -a bad-read -- -q -f run bad-read < /dev/null 2> tests/userprog/bad-read.errors > tests/userprog/bad-read.output 62 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/bad-write -a bad-write -- -q -f run bad-write < /dev/null 2> tests/userprog/bad-write.errors > tests/userprog/bad-write.output 63 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/bad-read2 -a bad-read2 -- -q -f run bad-read2 < /dev/null 2> tests/userprog/bad-read2.errors > tests/userprog/bad-read2.output 64 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/bad-write2 -a bad-write2 -- -q -f run bad-write2 < /dev/null 2> tests/userprog/bad-write2.errors > tests/userprog/bad-write2.output 65 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/bad-jump -a bad-jump -- -q -f run bad-jump < /dev/null 2> tests/userprog/bad-jump.errors > tests/userprog/bad-jump.output 66 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/userprog/bad-jump2 -a bad-jump2 -- -q -f run bad-jump2 < /dev/null 2> tests/userprog/bad-jump2.errors > tests/userprog/bad-jump2.output 67 | pintos -v -k -T 360 --bochs --filesys-size=2 -p tests/userprog/no-vm/multi-oom -a multi-oom -- -q -f run multi-oom < /dev/null 2> tests/userprog/no-vm/multi-oom.errors > tests/userprog/no-vm/multi-oom.output 68 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/lg-create -a lg-create -- -q -f run lg-create < /dev/null 2> tests/filesys/base/lg-create.errors > tests/filesys/base/lg-create.output 69 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/lg-full -a lg-full -- -q -f run lg-full < /dev/null 2> tests/filesys/base/lg-full.errors > tests/filesys/base/lg-full.output 70 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/lg-random -a lg-random -- -q -f run lg-random < /dev/null 2> tests/filesys/base/lg-random.errors > tests/filesys/base/lg-random.output 71 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/lg-seq-block -a lg-seq-block -- -q -f run lg-seq-block < /dev/null 2> tests/filesys/base/lg-seq-block.errors > tests/filesys/base/lg-seq-block.output 72 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/lg-seq-random -a lg-seq-random -- -q -f run lg-seq-random < /dev/null 2> tests/filesys/base/lg-seq-random.errors > tests/filesys/base/lg-seq-random.output 73 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/sm-create -a sm-create -- -q -f run sm-create < /dev/null 2> tests/filesys/base/sm-create.errors > tests/filesys/base/sm-create.output 74 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/sm-full -a sm-full -- -q -f run sm-full < /dev/null 2> tests/filesys/base/sm-full.errors > tests/filesys/base/sm-full.output 75 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/sm-random -a sm-random -- -q -f run sm-random < /dev/null 2> tests/filesys/base/sm-random.errors > tests/filesys/base/sm-random.output 76 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/sm-seq-block -a sm-seq-block -- -q -f run sm-seq-block < /dev/null 2> tests/filesys/base/sm-seq-block.errors > tests/filesys/base/sm-seq-block.output 77 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/sm-seq-random -a sm-seq-random -- -q -f run sm-seq-random < /dev/null 2> tests/filesys/base/sm-seq-random.errors > tests/filesys/base/sm-seq-random.output 78 | pintos -v -k -T 300 --bochs --filesys-size=2 -p tests/filesys/base/syn-read -a syn-read -p tests/filesys/base/child-syn-read -a child-syn-read -- -q -f run syn-read < /dev/null 2> tests/filesys/base/syn-read.errors > tests/filesys/base/syn-read.output 79 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/syn-remove -a syn-remove -- -q -f run syn-remove < /dev/null 2> tests/filesys/base/syn-remove.errors > tests/filesys/base/syn-remove.output 80 | pintos -v -k -T 60 --bochs --filesys-size=2 -p tests/filesys/base/syn-write -a syn-write -p tests/filesys/base/child-syn-wrt -a child-syn-wrt -- -q -f run syn-write < /dev/null 2> tests/filesys/base/syn-write.errors > tests/filesys/base/syn-write.output 81 | --------------------------------------------------------------------------------