유진선14
가입: 2018년 9월 11일 올린 글: 18
|
올려짐: 2018년11월9일 15:58 주제: 5-2 debug 팁..? |
|
|
조교님께서 올려주신 테스트케이스를 시험하던 중
'이걸 5-1 때처럼 debug 할 수 있으면 좋을 것 같다!'는 생각이 들어
(현재 올려주신걸 그대로 덮어쓰면 -debug에 아무 반응이 없습니다)
main.ml을 살짝 고쳤는데,
분명히 저보다 더 좋은 방법이 있을 것 같아
일단 제 방법을 먼저 공유드립니다!
(작게나마 도움이 되었으면 좋겠다는 마음에...)
1. open Sm5.Sm5를 open Sm5 위에 추가한다
코드: | open Translate
open Pp
open Sm5.Sm5
open Sm5
open K |
2. gc_test.ml 중 let_ = run cmds1 전까지를 전부 복사해서 let main() 위에 붙여넣는다
코드: |
(중략)
let append (n: int) (중략)
(*1. Simple malloc & use...*)
(중략)
cmds @ [PUSH (ID "x0"); PUSH (Val (Z 10)); ADD; LOAD; PUT]
let main() =
(중략) |
3. let lexbuf 부터 마지막 else 까지 지우고, in 뒤에 실행코드를 넣는다
코드: | ("Usage: " ^ filename ^ " [-pk | -psm5 | -k] [-gc] [-debug] [file]")
in
run cmds1;
print_endline (string_of_bool (check_exception cmds2))
(*
let lexbuf = Lexing.from_channel (if !src = "" then stdin else open_in !src) in
let pgm = Parser.program Lexer.start lexbuf in
if !pk then
KParseTreePrinter.print pgm
else if !psm5 then
print_endline (Sm5.command_to_str "" (Translator.trans pgm))
else if !k then
ignore (K.run pgm)
else
Sm5.run (Translator.trans pgm)*) |
4. 테스트코드의 126,127,128을 각각 2,3,4 로 바꾸고
sm5.ml 의 mem_limit 을 4로 바꾼다
(그냥 디버그를 실행하면 개수가 너무 많아지므로 개수를 줄인 것입니다.
반드시 제출하시기 전에 mem_limit을 128로 돌려놓으셔야 합니다)
사실 맘같아선 파일을 올리고 싶은데, 그 방법이 안보이네요 ㅠㅠ
debug한번 돌리면 테스트케이스랑 gc의 감을 잡는데 많은 도움이 될거 같습니다!(적어도 저는 그랬..어요)
거듭 강조하지만제출하시기 전에 mem_limit을 128로 돌려놓으셔야 합니다!!!!!!!! |
|