1*99451b44SJordan Rupprecht // This test is intended to verify that thread states are properly maintained 2*99451b44SJordan Rupprecht // when transitional actions are performed in the debugger. Most of the logic 3*99451b44SJordan Rupprecht // is in the test script. This program merely provides places where the test 4*99451b44SJordan Rupprecht // can create the intended states. 5*99451b44SJordan Rupprecht 6*99451b44SJordan Rupprecht #include <chrono> 7*99451b44SJordan Rupprecht #include <thread> 8*99451b44SJordan Rupprecht 9*99451b44SJordan Rupprecht volatile int g_test = 0; 10*99451b44SJordan Rupprecht addSomething(int a)11*99451b44SJordan Rupprechtint addSomething(int a) 12*99451b44SJordan Rupprecht { 13*99451b44SJordan Rupprecht return a + g_test; 14*99451b44SJordan Rupprecht } 15*99451b44SJordan Rupprecht doNothing()16*99451b44SJordan Rupprechtint doNothing() 17*99451b44SJordan Rupprecht { 18*99451b44SJordan Rupprecht int temp = 0; // Set first breakpoint here 19*99451b44SJordan Rupprecht 20*99451b44SJordan Rupprecht while (!g_test && temp < 5) 21*99451b44SJordan Rupprecht { 22*99451b44SJordan Rupprecht ++temp; 23*99451b44SJordan Rupprecht std::this_thread::sleep_for(std::chrono::seconds(2)); 24*99451b44SJordan Rupprecht } 25*99451b44SJordan Rupprecht 26*99451b44SJordan Rupprecht return temp; // Set second breakpoint here 27*99451b44SJordan Rupprecht } 28*99451b44SJordan Rupprecht main()29*99451b44SJordan Rupprechtint main () 30*99451b44SJordan Rupprecht { 31*99451b44SJordan Rupprecht int result = doNothing(); 32*99451b44SJordan Rupprecht 33*99451b44SJordan Rupprecht int i = addSomething(result); 34*99451b44SJordan Rupprecht 35*99451b44SJordan Rupprecht return 0; 36*99451b44SJordan Rupprecht } 37