<div><div>I want to learn clang internals and how it works. But llvm::sys::ExecuteAndWait executes in the debugger and that's all, finish, console output with my AST (I passes to clang "-ast-dump"). It didn't jump in the Lexer.cpp, Sema.cpp, etc. What should I do in the debugger, in order to see how Lexer, Sema work?</div><div> </div><div>My steps in the debugger:</div><div> </div><div>1) compiled debug version of llvm and clang</div><div> </div><div>2) created a source file "test_deb.cpp" with  the following code</div><div> </div><div>enum class Enum : int</div><div>{</div><div>    kOne,</div><div>    kTwo</div><div>};</div><div> </div><div>int f(int x) {</div><div>  int result = (x / 42);</div><div>  return result;</div><div>}</div><div> </div><div>int main()</div><div>{</div><div>    return f(4);</div><div>}</div><div> </div><div>3) launch clang-4.0 in in the debugger with the following parameters:</div><div>-std=c++1z -Xclang -ast-dump -fsyntax-only test_deb.cpp</div><div> </div><div>4)  and begin to learn how all work:</div><div>the "int main" in driver.cpp</div><div> </div><div>in driver.cpp is called "ExecuteCompilation" of "Driver"</div><div>    TheDriver.ExecuteCompilation(*C, FailingCommands); </div><div> </div><div>where called "ExecuteJobs" of "Compilation" (the file Compilation.cpp):</div><div>    C.ExecuteJobs(C.getJobs(), FailingCommands);</div><div> </div><div>in the func ExecuteJobs called ExecuteCommand </div><div>    if (int Res = ExecuteCommand(Job, FailingCommand)) {</div><div> </div><div>that calls "Execute" of "Command" (the file Jobs.cpp):</div><div> </div><div>where called a func "ExecuteAnddWait" of  "llvm::sys"</div><div> </div><div>    return llvm::sys::ExecuteAndWait(Executable, Argv.data(), /*env*/ nullptr,</div><div>                                     Redirects, /*secondsToWait*/ 0,</div><div>                                     /*memoryLimit*/ 0, ErrMsg,</div><div>                                     ExecutionFailed);</div><div> </div><div>but the "Executable" is "...path/clang-4.0" - the file, that I launched in the debugger o__O</div><div> </div><div>5) so llvm::sys::ExecuteAndWait(Executable,...) is called and that's all, finish, console output with my AST. It didn't jump in the Lexer.cpp, Sema.cpp, etc.</div><div> </div><div>What should I do in the debugger, in order to see how Lexer, Sema work?</div></div><div> </div><div>-- <br />Best wishes,</div><div>Ivan Kush</div><div> </div>