Using breakpoints in Xcode - iphone

I'm using the debugger to pause execution of my program at any time and view the state of the running code, so I set breakpoints before running my executable so that I can stop at known points and view the values of variables in my source code.
After I viewed my code, it comes to one new screen. Here I press "step over" button means it come to view the next line, if I press "Continue program execution" button means then it skipped the step by step execution and comes to execution part. Image shown below.
My doubt is, why the compiler come here after viewed my code? How to analyse this assembly language coding and what is the purpose of this code?

If you pause execution or a breakpoint is triggered, the debug area opens, displaying the values of variables and registers plus the debug console. You can use the buttons at the right end of the debug area toolbar to display both the variables and console panes or to hide either one.
The variables pane displays variables and registers. You specify which items to display using the pop-up menu in the top-left corner of the variables pane:
Auto displays only the variables you’re most likely to be interested
in, given the current context.
Local displays local variables.
All displays all variables and registers.
Use the search field to filter the items displayed in the variables pane.
The console pane displays program output and lets you enter commands to the debugger tool. You specify the type of output the console displays with the pop-up menu in the top-left corner of the console pane:
All Output displays target and debugger output.
Debugger Output displays debugger output only.
Target Output displays target output only.
Use these to understand what is happening at break points.

Maybe your code casted exception and goes back to [UIViewController loadViewIfRequired] method . This method is in the compiled program and it is binary now so you won't see the source code and the assembly language is presented instead.
It is possible that [UIViewController loadViewIfRequired] has exception handling code.

Related

Vscode watch for a single variable

The interactive window of vscode has a tab called Jupyter:Variables that allows me to watch on real time the variable of my code. However, sometimes there are too many variables or I just need to see in detail a single one on real time (that may be too long to display correctly in the Jupyter:Variables tab). Although double clicking on the variable allows me to see its contents, they are not automatically updated when I run another cell which defeats the purpose of having a watch.
Is there any way (integrated or with extensions) to have a watch for a single variable or a selection or variables in the interactive window, similar to the debugger watch (shown in the image)?

Xcode 4 equivalent of the debugger

In the older version of Xcode, I used to press cmd-shift-Y to get a window (I think it was the debugger) to see where errors were coming from in my iPhone app.
But now, I always see question marks, and can't ever seem to properly track where the error is coming from. How do I do it in the new Xcode?
The screenshot you have posted is thread view of debugger actually. When you get an error you can still hit Cmd+Shift+Y which is a keyboard shortcut to hide/show the debug area. It will pop up in main editor area from bottom.
In the debug area, the top horizontal bar shows the buttons to continue, Step Into, Step Over etc. In this horizontal bar, the last item on right hand side is the function name which was executed the last. You can click on that to see the stack trace and track from what function the error is coming. The function which was executed recently in the trace would be the first item in the list and the main function would be the last in this list.
Hope this helps.

Running my program from PyDev with one click?

I am developing using the PyDev plugin in Eclipse. My program uses several classes in several files. I usually run the program using the green "play" icon or using Control+F11. The only problem is that it will run the file, which is currently in "focus". Usually this is not the one containing the starting point of my application. As I run my program something like 200 times a day, this means that I need 200 extra click on the mouse and often forget about this.
Is there any way of setting the default file to launch?
Yes, change the launching to rerun the last launched, so Ctrl+F11 will launch the last one -- and use F9 to launch the one with focus -- See instructions and details at: http://pydev.org/manual_101_run.html
For me, the shortcut is Ctrl+Shift+F9. I don't think I've changed any keybindings, so its strange that it would be different from the official documentation.
Go to Run->Run History, and select the run that is your 'main' run. Now you should be able to use Ctrl-Shift+F9 from any other file to rerun your main. If it isn't Ctrl+Shift+F9 for you, look on the console window that should be at the bottom of your screen showing the stdout after every run. There is an icon on the top of it that has the green start arrow with a yellow arrow underneath it pointing to the right. That is the command to relaunch with the same configuration. If you hover over that, it should tell you the keyboard shortcut you need.

Xcode: finding a variable value while setting a breakpoint

I am a seasoned Visual Studio programmer, and when I set a breakpoint, I can open an intermediate window and type ?variableName to view the current value of the variable.
In Xcode however, I can't seem to find an equivalent. I can hover over the variable name when stepping through the code, but long strings are truncated in the view.
Is there an Xcode equivalent to the intermediate window of Visual Studio? If not, how can I set a breakpoint and watch the value (the full value in the case of longer strings)?
Many thanks,
Brett
Use the console window (under the Run menu - choose "Show console") and then it's a gdb debugger. Then you can issue:
po variableName
Another way is to hover over the variable, right-click (or [Ctrl]+[left-click]) and choose "Print Description". The output will be sent to the gdb console.
There is a debugger GUI you can open by clicking the little spray bottle next to the step commands (or through Run > Debugger). It has a GUI window with pretty much all the objects in the frame you're looking at and the current call stack.

Debugger / Profiler for Eclipse?

Is there any tutorial for debugging applications/ running profiler in eclipse? Please let me know thanks..
This will depend on what language you are using. How you setup for debugging PHP vs C++ is a little different as they use different underlying tools (PHP - Xdebug vs C++ - gdb)
In a general sense, you will configure the app much like you would set it up to run within Eclipse. In some cases you will have to be sure to enable debugging information within the code base for the debuggers to provide detailed information. From there you're looking at setting breakpoints, stepping, and setting up watches which is very similar language-to-language within the Debug Perspective in Eclipse.
A common scenario is to set a breakpoint within the codebase by clicking on the left bar in the editor, and selecting toggle breakpoint. Then click the debug button in the IDE and it should open the Debug Perspective and either break at the beginning of main, or will run to the breakpoint you set in the code. Once the break is hit, you will be able to browse the stack frames within one of the views within the perspective and you will see tabs for watches, breakpoints, etc. The buttons near the top that look similar to play, and then arrows jumping over dots are the way you control the execution from your breakpoint. If you click "step over" the code will go line by line in the source file you're in until it must goto another file to follow the execution of your code. It will not go into a function call, rather call it execute it and return to the next line in the current source. If you want to go into the function call and continue debugging from there, you would use the "step into" button which is right next to "step over" in most cases. Resume restarts regular execution and will run your program normally until the end or another breakpoint is hit.
Start from there and get comfortable with it and then start playing with things like conditional breakpoints and watches. Conditional breaks are exactly like breakpoints but they only stop execution if the condition you specify is met. With C++ this is usually done by right clicking on the breakpoint and providing the conditional expression where appropriate in the menu. (I forget the exact verbage)
Watches allow you to watch memory and have the program break when memory is read, written to, or both so you can inspect your application.
Some debuggers in Eclipse may lack some of these features or offer more advanced features than those listed above, but these concepts should get you well on your way.
Good luck!