valgrind 사용에 대해 질문 드립니다

hypnosis의 이미지

프로젝트 개발 완료하여 메모리 누수를 체크 하기 위해서 valgrind 명령을 사용하여 프로그램 메모리 누수 체크 했는데요.

이 프로그램은 thread 를 여러개 생성해서 동작하는데 스레드 2개 생성했을땐 아래와 같이 나타나지 않는데 3개 이상 스레드 생성했을때

마지막에 죽었음 이라는 메세지가 뜨네요.. valgrind 사용하지 않고 그냥 돌렸을땐, 문제없이 돌아가는것으로 보이는데.. 뭔가 찜찜해서..

나중에 문제 될 것 같고..

문제는 --leak-check=full 했을때 보통 소스 몇 라인의 문제가 있는지 나타내준다고 하는데 전 안나와서.. 어디를 봐야 할지.. 도통 감이 안잡히네요..

혹시 저와 같은 상황 보신분 계신가요..?

==8310== Memcheck, a memory error detector
==8310== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==8310== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info
==8310== Command:
==8310==

thread [2] End

==8310== Thread 4:
==8310== Invalid read of size 4
==8310== at 0x310C90AD: ???
==8310== by 0x310CAA5F: ???
==8310== Address 0x70588d0 is 16 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 4
==8310== at 0x310C90BD: ???
==8310== by 0x310CAA5F: ???
==8310== Address 0x70588d4 is 20 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 4
==8310== at 0x310C90FF: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C4658: ???
==8310== by 0x70A53D4: ???
==8310== by 0x3: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x81FF: ???
==8310== by 0x310C4637: ???
==8310== by 0x310CAA5F: ???
==8310== Address 0x70588d4 is 20 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 8
==8310== at 0x641CDC3: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0x7B4CD1F: ???
==8310== Address 0x7058930 is 112 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 1
==8310== at 0x641CDCE: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0x7B4CD1F: ???
==8310== Address 0x70588c8 is 8 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 1
==8310== at 0x641CDD7: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0x7B4CD1F: ???
==8310== Address 0x70588c0 is 0 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 8
==8310== at 0x641CDE7: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0x7B4CD1F: ???
==8310== Address 0x7058908 is 72 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 8
==8310== at 0x641CDEE: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0x7B4CD1F: ???
==8310== Address 0x7058900 is 64 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid write of size 8
==8310== at 0x641CDF8: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0x7B4CD1F: ???
==8310== Address 0x7058910 is 80 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid write of size 8
==8310== at 0x641CE00: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0x7B4CD1F: ???
==8310== Address 0x7058908 is 72 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid write of size 8
==8310== at 0x641CE0C: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0x7B4CD1F: ???
==8310== Address 0x7058900 is 64 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 4
==8310== at 0x641CE13: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0x7B4CD1F: ???
==8310== Address 0x70588c0 is 0 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 8
==8310== at 0x641CE76: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0x7B4CD1F: ???
==8310== Address 0x7058918 is 88 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 4
==8310== at 0x641CE87: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0x7B4CD1F: ???
==8310== Address 0x7058950 is 144 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 4
==8310== at 0x641CE8A: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0x7B4CD1F: ???
==8310== Address 0x70588d0 is 16 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 4
==8310== at 0x641CE9B: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0x7B4CD1F: ???
==8310== Address 0x70588c0 is 0 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 4
==8310== at 0x641CEC8: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0x7B4CD1F: ???
==8310== Address 0x70588d4 is 20 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 4
==8310== at 0x641CF02: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0xFF: ???
==8310== Address 0x70588c0 is 0 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 1
==8310== at 0x641CF24: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0xFF: ???
==8310== Address 0x70588c0 is 0 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 8
==8310== at 0x641CF39: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0xFF: ???
==8310== Address 0x7058930 is 112 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 8
==8310== at 0x641CF44: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0xFF: ???
==8310== Address 0x70257f0 is 48 bytes inside a block of size 64 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x7025B6F: ???
==8310==
==8310== Invalid read of size 8
==8310== at 0x641CF48: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0xFF: ???
==8310== Address 0x7058918 is 88 bytes inside a block of size 160 free'd
==8310== at 0x4A05D21: free (vg_replace_malloc.c:325)
==8310== by 0x558059D: ???
==8310== by 0x104BFF: ???
==8310== by 0x3: ???
==8310== by 0x104BFF: ???
==8310==
==8310== Invalid read of size 4
==8310== at 0x641CF53: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0xFF: ???
==8310== Address 0x8 is not stack'd, malloc'd or (recently) free'd
==8310==
==8310==
==8310== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==8310== Access not within mapped region at address 0x8
==8310== at 0x641CF53: ???
==8310== by 0x7026F4F: ???
==8310== by 0x52AABCF: ???
==8310== by 0x784FC5F: ???
==8310== by 0x6406E97: ???
==8310== by 0x7852D9F: ???
==8310== by 0x7: ???
==8310== by 0x310C905A: ???
==8310== by 0xA63: ???
==8310== by 0x7B4CD1F: ???
==8310== by 0x310C933E: ???
==8310== by 0xFF: ???
==8310== If you believe this happened as a result of a stack
==8310== overflow in your program's main thread (unlikely but
==8310== possible), you can try to increase the size of the
==8310== main thread stack using the --main-stacksize= flag.
==8310== The main thread stack size used in this run was 10485760.
==8310==
==8310== HEAP SUMMARY:
==8310== in use at exit: 24,541,942 bytes in 11,495 blocks
==8310== total heap usage: 69,818 allocs, 58,323 frees, 2,087,907,326 bytes allocated
==8310==
==8310== LEAK SUMMARY:
==8310== definitely lost: 19,311 bytes in 1,494 blocks
==8310== indirectly lost: 0 bytes in 0 blocks
==8310== possibly lost: 4,709,333 bytes in 5,162 blocks
==8310== still reachable: 19,813,298 bytes in 4,839 blocks
==8310== suppressed: 0 bytes in 0 blocks
==8310== Rerun with --leak-check=full to see details of leaked memory
==8310==
==8310== For counts of detected and suppressed errors, rerun with: -v
==8310== ERROR SUMMARY: 23 errors from 23 contexts (suppressed: 7 from 7)
죽었음

ymir의 이미지

소스 라인이 안 보이는 건 strip 되어서 그럴겁니다.
빌드 옵션에 -g 를 넣거나, strip 하는 부분이 있으면 빼고 해보세요.

프로그램이 안 죽고 잘 돈다고 해서 정상이라는 보장이 없습니다.
스택 깨먹고 엉뚱한 메모리를 포인팅 하고 있어도 도는 데까지는 돌다가, 더 이상 못 해먹겠다 싶으면 죽거든요.
그나마 런타임 상황이 변하니까 프로그램이 일찍 죽어주는거라고 생각하시면 될 것 같네요.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

hypnosis의 이미지

ymir님 이번에도 답변 달아주실꺼라 믿고 있었습니다 ㅠ
일단, 디버깅 옵션 넣어서 빌드 하고 제가 만든 라이브러리 또한 strip 하지 않았는데요 ㅠㅠ..
소스를 일일히 찾아보는수 밖에 없을까요..

ymir의 이미지

file 명령으로 한 번 더 확인해 보시구요.

음.. 밑에 쯤에 보니 stack overflow 났을 것 같다는데..
그렇다면 저렇게 address 는 찍히는데 symbol 은 커녕 모듈 이름도 안 찍히는 거나..
address 에 0xFF, 0x7 같은 수상한 값이 찍히는 것도 어느 정도 설명이 될 수 있겠네요.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

hypnosis의 이미지

몇번 더 테스트한 결과 일단 다른쪽에서 쓰는 API 문제 인것 같아요. 이 소스는 제가 볼수 있는 API는 아니라서..
특정 파일 PATH를 가져왔을때 위와 같은 현상이 일어나네요.

아무튼 ymir님 ~ 조언 항상 감사드립니다 ~!!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.