startlink   3년 전

현재 런타임 에러가 나타난 경우 오류를 확인할 수 있는 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 와 같은 것 중 무엇인지 보여줄 수 있습니다.

어떻게 생각하는지 의견을 댓글로 달아주세요.

이 기능이 추가되더라도, 대회에서는 대회 주최자가 선택할 수 있습니다. 현재는 채점 진행률을 보여줄지 아닐지 여부를 선택할 수 있습니다.

WeissBlume   3년 전

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년 전

런타임 에러 이유 보여줍니다.

https://www.acmicpc.net/board/...

댓글을 작성하려면 로그인해야 합니다.