After stuck with it for so long, ...
Finally, I try using CodeBlocks (call it father) to build a debug version of CodeBlocks (called child) from source. Then debug the process of finding debugger of the child CB. I saw detected debugger is "cdb.exe" rather than "gdb.exe".
I wonder why the father can debug while the child can't, this lead to the problem domain is project specific, and find out project setting for Compiler (this will choose corresponding debugger) is "Build Options" is MS 2005 Compiler, conflict with GNU GCC Compliler inglobal setting "Setting -> Global compiler settings -> <the compiler you use> -> Toolchain executables -> Program files".
That's it.
Hope that anyone encounter this problem may consider this as a hint.