1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch//===-- main.c --------------------------------------------------*- C++ -*-===// 21e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// 31e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// The LLVM Compiler Infrastructure 41e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// This file is distributed under the University of Illinois Open Source 61e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// License. See LICENSE.TXT for details. 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//===----------------------------------------------------------------------===// 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include <stdio.h> 101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// This simple program is to demonstrate the capability of the lldb command 121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// "breakpoint modify -i <count> breakpt-id" to set the number of times a 131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// breakpoint is skipped before stopping. Ignore count can also be set upon 141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// breakpoint creation by 'breakpoint set ... -i <count>'. 151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int a(int); 171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int b(int); 181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int c(int); 191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int a(int val) 211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles){ 221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (val <= 1) 231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return b(val); 241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) else if (val >= 3) 251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return c(val); // a(3) -> c(3) Find the call site of c(3). 261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return val; 281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int b(int val) 311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles){ 321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return c(val); 331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int c(int val) 361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles){ 371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return val + 3; // Find the line number of function "c" here. 386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int main (int argc, char const *argv[]) 411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles){ 421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) int A1 = a(1); // a(1) -> b(1) -> c(1) 431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) printf("a(1) returns %d\n", A1); 441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) int B2 = b(2); // b(2) -> c(2) Find the call site of b(2). 461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) printf("b(2) returns %d\n", B2); 471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) int A3 = a(3); // a(3) -> c(3) Find the call site of a(3). 491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) printf("a(3) returns %d\n", A3); 501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) int C1 = c(5); // Find the call site of c in main. 521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) printf ("c(5) returns %d\n", C1); 531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return 0; 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)