C/C++의 경우에도 Codeforces를 보면 런타임 에러가 발생했을 때 Address Sanitizer를 이용해서 재컴파일 한 바이너리로 채점을 다시 수행해서 segfault의 주된 원인인 메모리 접근 오류를 알려주던데, 이것도 고려해주시면 감사하겠습니다..! (컴파일도 두 번, 채점도 두 번 해야 해서 오버헤드가 클 것 같은 걱정이 드네요 ㅠㅠ)
참고: https://codeforces.com/blog/en...
clang++ -g -O2 --static -fsanitize=address,undefined Main.cc # or g++ -g -O2 --static -fsanitize=address,undefined Main.cc # or g++ -g -O2 -static-libasan -fsanitize=address,undefined Main.cc
startlink 3년 전 10
현재 런타임 에러가 나타난 경우 오류를 확인할 수 있는 stderr의 내용을 보여주지 않고 있습니다.
C++은 오류가 90%는 Segmentation fault라서 보여주는 것이 큰 의미는 없지만, Java와 Python은 stderr을 파싱하면 이유가 간단하게 보여줄 수 있습니다.
예를 들면, C++은 Segmentation fault인지, exitcode가 0이 아닌 것인지, Floating point exception인지를 보여줄 수 있을 것 같으며
Python은 NameError, TypeError, IndexError, RecursionError 와 같은 것 중 무엇인지를 보여줄 수 있습니다.
Java는 main 함수가 Main에 없는지, InputMismatchException, ArrayIndexOutOfBoundsException 와 같은 것 중 무엇인지 보여줄 수 있습니다.
어떻게 생각하는지 의견을 댓글로 달아주세요.
이 기능이 추가되더라도, 대회에서는 대회 주최자가 선택할 수 있습니다. 현재는 채점 진행률을 보여줄지 아닐지 여부를 선택할 수 있습니다.