You will not get details about where they differ. To get the details of differences, you can run a diff for the unequal subcomponents Diff button in the corresponding result line. You can use the History tab to get back to the first result list.
To troubleshoot such applications, you must be able to debug HTTP requests. After activating debugging, you will stop in the system code of the http requests in the debugger. You can set new user breakpoints or watchpoints to reach the point of interest.
I must say.. Thanks for this great blog, Olga! I'm pretty sure otherwise today would have been the day I would have bitten into my keyboard.
Skip to Content. Olga Dolinskaja. November 9, 9 minute read. Some useful debugger settings How to handover a debugger problem — Use Debugger Variants How to display all loaded programs and global variables — Use the Loaded Programs Tool How to test a function module in the debugger and pass parameters Helpful hints for analyzing variables How to debug a program which is running in an endless loop How to debug a background job which is running in an endless loop How to debug a finished or crashed background job How to compare ABAP variables — Use the Diff Tool How to debug HTTP requests Helpful debugger ok-codes.
Alert Moderator. Alerting is not available for unauthorized users. Assigned Tags. Similar Blog Posts. Related Questions. You must be Logged on to comment or reply to a post. Alok Patra. Excellent article, thanks a lot Olga!! Like 0 Share. Right click and copy the link to share this comment. Ramesh Babu Srikakollu. Regards, Ramesh. Gokula Kumar.
Hi, good and informative.. Vineet Safaya. Former Member. Hello Olga, Very useful information. Thanks for sharing and waiting for more.. Hello Olga, Thanks for this, very useful. Just used one of the techniques re : TRFC, its fantastic. Lukas Weigelt. Hi Olga, Very useful information. Thanks a lot! Very informative. Caetano Almeida. Excellent document. Many useful tricks for my daily job. Indeed verry informative, keep up with sharing these insights.
Kripa Rangachari. Jonathan Christhian Mejia Anchante. Hi Olga, Thank you, your post helped me a lot today. It contains very nice tips. Its really great help to developer. Thank you very much for posting such a very informative information. As a consquence, the lines in between are skipped, i. Be aware that this feature can be abused: Users can skip intended and meaningful authorization checks and, therefore, conduct actions they are not allowed to do.
Generally it is a recommended practice to turn this feature off i. Typically you choose one particular code e. Besides such dynamic breakpoints you can leverage special dynamic breakpoints and conditional breakpoints to make your debugging experience easier. Assume we require to identify all authorization checks conducted during a program flow.
How do we solve this challenge? Firstly, we could execute the ABAP program in the debugger and follow the program flow by hand. After browsing through all methods, function modules etc. Apparently this approach is time-consuming and also error prone as you never know if you have missed some piece of code deep in the call stack. Choose Breakpoint at Statement with regards to our example. In the appearing pop-up we enter the name of the command. As a consequence, the debugger creates breakpoints at every authorization check.
By pressing F8 you can navigate from one occurrence to another. Consider activating system debugging beforehand to really fetch all authorization checks otherwise you miss them hidden in system code.
Assume you are debugging some code containing a loop whereas you are interested in debugging a certain cycle e. Making the debugger stop in this exact cycle is easy using conditional breakpoints. When we set a breakpoint inside the loop, we stop there 50 times by pressing F8.
By introducing a conditional breakpoint we can define that the debugger shall only stop at this breakpoint in case a given condition is met. This simple example visualizes how to use conditional breakpoints. I found this feature to be quite useful a couple of times throughout my projects. In the official documentation we can find terms such as static breakpoints, special dynamic breakpoints, external breakpoints, debugger breakpoints. While investigating the meaning of these terms I found that they are addressing different properties of breakpoints, such as their life time or the way you create them.
Therefore, I was curious and have created a classification of breakpoint times according to the following categories:. Breakpoints exist for a certain time, that is once their life time has passed they are gone and cannot be used anymore. The possible life times are:. Generally all breakpoints can be deleted manually, i. If so, the breakpoint is considered once the respective user executes the code line. If not, the debugger stops at every execution regardless of the current user.
There is breakpoints that stop at dialog processing only, such as Debugger Breakpoints. The consideration of a breakpoint may depend of a given condition expressed as logical condition. For instance, a variable has to have a defined value and, therefore, the debugger only stops if the condition is fulfilled.
Such breakpoints are referred to as Conditional Breakpoints. In case you do not need a breakpoint being considered in your debugging session, you can deactivate it.
You can turn it on again once you want to use it. Watchpoints are quite useful whenever you are interested in the time point and the code at which a certain variable or an object attribute changes its value. Especially in very complex program flows with a deep call stack it may be hard to figure out value changes manually. In order to create a watchpoint we navigate to the tab Break. In this dialog we can choose between inspecting variables of object attributes.
We can also specify the respective ABAP program. After creating this watchpoint and pressing F8 in our sample program, we get notified that the watchpoint has been reached. Debugger Scripting is a powerful mechanism to automate processes that occur often, are time-consuming and are conducted by hand. Disclaimer : Only do so if it is harmless, that is you must not abuse this feature. Tell you admin if you are authorized to use it and you are working in a field with sensitive data or processes.
You can open the tab Script in the debugger and there you will find a local class implementation. Besides the methods prologue, init and end you can add you own logic in the method script. On the left-hand side you can decide when the script shall be triggered. For instance, et every debug step or after once a watchpoint is reached.
Agree completely. Also these are not really "advanced techniques", as the title promised. It's a decent "debugger primer" for the beginners, could greatly benefit from the specific use cases. Ah but isn't that always the great thing about writing a blog! Someone thinks of something differently and adds to it! While debugging, click on the Tools icon on the far right.
I hope this will help to du your work! Actually it was not a whish-list, but examples of what I like about the debugger! So I did know how to get them allready. Sorry for the confusion! I have an example for one possible use of the debugger scripting.
It's not brand new but you can apply it any time. In projects where we made extensive use of ABAP OO it turned out that going through a complex "objects network" using the debugger can be extremely cumbersome and time consuming. You can have many nested collections, objects with different types, object references to follow.
And then once you arrive at the spot where you wanted to be So I wrote a script that parsed all the references and provided me all the information is a nicely formatted list. I can't tell you how much time that saved me but it was certainly a lot! It may stop too many times, but i usually find what I like. When I was on the correct version my favorite thing was to save the parameters for a function call.
Then I could skip around easier. I also use watchpoints quite a bit. I like to set up a watchpoint for a certain condition. That way I can quickly get to a record that is causing issues. I like that idea! But then the message I get isn't always the one that I'm looking for.
It's six levels deep in the code. However run it. Then run it again once I find the next message. That's got to be better. Videos of the rehearsal and other materials can be found here. I made some improvements like multiple search Patterns and a "don't stop multiple times at the same code line" option. Whenever we talk about debugging, we should ask from time to time: Is the ABAP debugger still the most powerful debugging tool we have?
I'd say, half a year ago it still was. Or did AdT-debugger catch up, or even take over? Thomas Fiedler , Florian Henninger can you help us out on this one? The standard debugger formerly known as new debugger is rich in features and the ADT debugger was not yet able to catch up completely. But the main features are in place. The quality level of the standard debugger robustness, performance is very high. Personally I think that the ADT debugger is actually not yet on the same level, but of course we try to improve the ADT debugger whenever development capacity and priorities allow it.
For example, it is currently planned to improve the single step performance on networks with high latency. Very nice blog about the debugger, but as already discussed here, not really advanced features. Neverthelles, very nice initiative!! Debugger Variants - When I need to stop my session and I and to quicky come back to it, I use a debugger variant with all my settings saved.
Then you can enter the remote function using F5 to continue debugging in the called function. I am currently working in a project where we insert an "Include" in every exit and enhancement that get created in the system. A very useful technique for standard debugging. Thanks for posting the useful information, especially about conditional breakpoints! I have one question that's bugged me for years and I've never found an answer.
Maybe you know? When the details of an internal table are displayed in square brackets, e. Of course, it doesn't take into account the referenced data objects string, xstring, objects and data references which just take 8 bytes each in the line, but the referenced data may occupy much more memory. Thanks for the passage. Do you have any idea of that? Thank you Mr. Skip to Content. Marco Dahms. January 22, 9 minute read. In this blog post I am going to demonstrate my personal favourites.
Debugging Techniques Debugging deep inside the Call Stack Apart from debugging your own custom source code or the business-oriented code on the application level, it might be necessary from time to time to dive deeper into the call stack. System Debugging System programs are typically provided by SAP itself and you should not classify your own programs as such. Update Debugging Whenever you deal with transactions or reports that utilize asynchronous update tasks e.
Before we can navigate into this code, we have to activate system debugging see chapter above. Make your Breakpoints more powerful Breakpoints allow the developer to specify in which code line the debugger should stop. Special Dynamic Breakpoints Assume we require to identify all authorization checks conducted during a program flow. Conditional Breakpoints Assume you are debugging some code containing a loop whereas you are interested in debugging a certain cycle e.
Consider the following sample program. We can define the condition using tab strip Break.
0コメント