리눅스에서 buffer overrun 을 탐지하고 싶은데요
가령 buffer size 가 10 인데 20byte 를 write 한다던지
이런 것을 찾고 싶은데 GDB 로는 못찾는 것 같더라구요
이런것을 runtime 시check 해 주는 tool 을 찾고 있습니다
알려주시면 감사하겠습니다.
gcc 에 -fsanitize=address 옵션 주고 빌드 해보세요.https://github.com/google/sanitizers/wiki/AddressSanitizer
dynamic allocation 의 경우에는, electric fence 나 dmalloc 같은 것들도 참고해 보시면 될 것 같네요. memory debugging 용으로 쓰는 애들이라, production code 에는 넣지 않는 게 좋습니다.
가급적이면 위와 같은 애들이 필요한 상황이 생기지 않도록.. 꼼꼼하게 정확히 계산해서 코딩을 하는 습관을 들이시는 게 좋습니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
valgrind 에 다양한 기능이 있습니다. 기본 기능이 invalid write/read 를 잡아내는 것이고, 부가 기능들 중의 하나가 memory leak 탐지하는 것일 정도로. 단점은, runtime 에 끼어들어가는 그 특성상, 프로그램의 성능이 어마어마하게 하락하기 때문에 평소와 똑같은 동작조건은 아니라는 것 하나 뿐입니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
음 ..
gcc 에 -fsanitize=address 옵션 주고 빌드 해보세요.
https://github.com/google/sanitizers/wiki/AddressSanitizer
dynamic allocation 의 경우에는, electric fence 나 dmalloc 같은 것들도 참고해 보시면 될 것 같네요.
memory debugging 용으로 쓰는 애들이라, production code 에는 넣지 않는 게 좋습니다.
가급적이면 위와 같은 애들이 필요한 상황이 생기지 않도록..
꼼꼼하게 정확히 계산해서 코딩을 하는 습관을 들이시는 게 좋습니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
valgrind 에 다양한 기능이 있습니다.
valgrind 에 다양한 기능이 있습니다.
기본 기능이 invalid write/read 를 잡아내는 것이고, 부가 기능들 중의 하나가 memory leak 탐지하는 것일 정도로.
단점은, runtime 에 끼어들어가는 그 특성상, 프로그램의 성능이 어마어마하게 하락하기 때문에 평소와 똑같은 동작조건은 아니라는 것 하나 뿐입니다.
댓글 달기