I found the solution... After attaching to the remote target and once all symbols are loaded, I need to pause the debugger, then set a breakpoint that can be hit from my program, click on run again, it'll hit the breakpoint, and all variables and source code will be shown. You can also set a breakpoint from the beginning before clicking on the green button of attaching to a debug session, then click on the green triangle to run/attach to remote process it will hit the breakpoint and source code will be shown as well as variables, call stack, etc.