Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Following this question and the comments made, together with the information in this question, the following code allows error tracking and debugging very nicely.

SetAttributes[withTaggedMsg, HoldAll];

withTaggedMsg[sym_] := Function[,
  Internal`InheritedBlock[{MessagePacket},
    Unprotect[MessagePacket];
    MessagePacket[name__, BoxData[obj_, form_]] /; ! TrueQ[$tagMsg] :=
          Block[{$tagMsg = True},
        Identity@MessagePacket[name, BoxData[RowBox[{
          ToBoxes @ Style[
            Row[{"At iteration", HoldForm[sym], "=", sym, Spacer[5]}, " "],
            Black],
        obj}], form]]
      ];
    #
  ], HoldAll];

f[var : _] :=
    Block[{arg},
    arg = var;
    1/arg
];

Map[f[#] &, Range[-2, 1, 1]] // withTaggedMsg[arg]

(*At iteration arg=0  Power::infy : Infinity expression 1/0 encountered.
{-(1/2), -1, ComplexInfinity, 1}*)

Now, the big problem is how to use withTaggedMsg together with ParallelMap instead of Map.

ParallelMap[f[#] &, Range[-2, 1, 1]] // withTaggedMsg[arg]

(*At iteration arg=arg Parallel`Protected`PacketHandler::default: Unhandled packet MessagePacket[Power,infy,BoxData[RowBox[{StyleBox[RowBox[{Power,::,infy}],
MessageName],: ,"Infinite expression \!\(1\/0\) encountered."}],StandardForm]] received and discarded from KernelObject[6,local].
{-(1/2), -1, ComplexInfinity, 1}*)

I don't see how I could do it, and would appreciate immensely if I could get some input in this.

Thanks!

share|improve this question
    
I found this question today while retagging posts. I don't believe I have seen it before. Are you still hoping for an answer? –  Mr.Wizard Jul 9 at 1:58
    
I guess not, no. Sorry if it stayed here for too long. Should I close it? –  Sosi Jul 9 at 10:09
    
Surely it is not your fault that nobody answered. Incidentally in 10.1.0 under Windows this appears to work: ParallelMap[withTaggedMsg[arg][f@#] &, Range[-2, 1, 1]]. The inner term can also be written withTaggedMsg[arg]@*f. Do these work for you? –  Mr.Wizard Jul 9 at 16:10
    
Indeed, it works, but it isn't as pretty as the one above (ofc, this isn't a problem): ´ParallelProtectedPacketHandler::default: Unhandled packet MessagePacket[Power,infy,...iteration",TagBox[<<2>>],"=",0,... {GrayLevel[0], RectangleBox[{0, -1}, {2, 1}]}}, AspectRatio->1, Frame->True, FrameStyle->GrayLevel[0.], FrameTicks->None, ImageSize->{Automatic, 10.8}, PlotRangePadding->None]),StripOnInput->False],RowBox[{StyleBox[RowBox[<<1>>],Me‌​ssageName],: ,"Infinite expression \!(1\/0) encountered."}]}],StandardForm]] received and discarded from KernelObject[2,local].´ –  Sosi Jul 10 at 12:28
    
(sorry for the messy comment. but you can see that ´iteration,...=,0´, similarly to the code above.) Maybe you'd like to post this as an answer? –  Sosi Jul 10 at 12:29

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.