When an "access violation" exception occurred and didn't be caught by the program, it would be caught by debugger such like vs.net. 1: int main() 2: { 3: int *i = 0; 4: *i = 1; 5: } If I debug this program in vs.net, program will be broken at line 4 and an exception dialog box will be displayed. So I can know the origin of the exception. The problem is when the exception occurred in the thread started by boost::thread, program cannot be broken at the line from which exception been thrown. 01: void func() 02: { 03: int *i = NULL; 04: *i = 1; 05: } 06: int _tmain(int argc, _TCHAR* argv[]) 07: { 08: thread *t = new thread(func); 10: t->join(); 11: delete t; 12: return 0; 13: } The program should be broken at line 4, but it didn't. This makes the debugging boost::thread more difficult. How can I resolve the problem? thanks.