Code in script is printing to command window
19 views (last 30 days)
Show older comments
Bernoulli Lizard on 9 Aug 2012
Commented: James Van Zandt on 30 Jan 2019
I am editing a program that someone else wrote, and when I run it, each time it prints a number to the command window. I would like to find what line of code is causing this, but I can not find it and the script is many pages long. I have tried scanning to see if any line is missing the semi colon supresion and have also used find to search for "disp(", but I did not find anything.
Star Strider on 9 Aug 2012
Edited: Star Strider on 10 Aug 2012
One option is to use the Editor debugging functions and set breakpoints. Set them and remove them down your code as necessary until you locate the area of the code where the number starts to display.
A similar approach is to insert a break or return statement at a particular point in your code and then see if the number displays. (Those statements will stop code execution at that line.) If the number displays, the statement producing it is before the return you inserted. I suggest you add something like
return % ==============================================
to your return statement so it will be easier to find later. If the number didn't display before that return, comment that return out (so you know where it was), and do the same thing several lines further down in your code. Keep doing this until you locate the area where the number starts to display. This will at least narrow your search. Then comment out particular lines of code until you locate the one that's displaying the number.
This approach is kludgy beyond description, but sometimes it's the only way to solve such problems.
Additional idea: if you can't find a line in your code that you know is displaying the number, check the code's dependencies with depfun. The original author of the code could have written a function, called by the code you have, that's displaying the number.
James Van Zandt on 30 Jan 2019
Star Strider's method is an example of a binary search, which lets you cut down the length of code by a factor of two for each editing step. To speed this up, insert something like this in many places:
(Note the space between the quotes). You'll get a bunch of printouts like this:
> In myfunction (line 2)
> In myfunction (line 22)
> In myfunction (line 44)
This should narrow the range. Repeat to narrow it further.
More Answers (1)
Daniel Shub on 9 Aug 2012
Edited: Daniel Shub on 9 Aug 2012
I can think of three ways of doing this.
- Set break points to narrow down where the output occurs. This could involve a lot of trial and error and if the code takes a long time to run will be inefficient.
- Overload disp and fprintf to be something like dbstack. Assuming the output is invoked by either of these two methods you will get the calling line number.
- Use ECHO. The output will show you each line of code and what it produces.
I do not believe anyone starts their code with
clear all; close all; echo off;
anymore, so you should be pretty safe.
By the way I am wanting upvotes for finding a potentially useful way of reviving a long dead command
Find more on Entering Commands in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!