[Paraview] Reader did not create output

Berk Geveci berk.geveci at kitware.com
Sun Jan 31 09:55:34 EST 2010


Two hints first:

- If you make a change only to the implementation (i.e. a cxx file),
you can use:

make vtkFoo/fast

where vtkFoo is the library that contains the .cxx file - in this case
vtkFiltering.

- To get the value of an entry in vtkInformation in gdb, you can do:

> print  vtkDataObject::DATA_TYPE_NAME()->Get(info)

Each key object has a Get method that takes the information object as
the argument.

> I set a break point in CheckDataObject. I stepped through - It skips
> right to the 'else' on line 682 of vtkDemandDrivenPipeline.cxx.

Something is fishy. This will require some more hard-core debugging.
You may want to run this through valgrind first. If that shows
something, it will save you time. Also, you may want to try a clean
build.

If valgrind doesn't show anything, try this:

- before opening the file, set a breakpoint in
vtkPolyDataAlgorithm::FillOutputPortInformation
- after it sets DATA_TYPE_NAME(), make sure it is set
- write down the pointer address of info
- continue until vtkDemandDrivenPipeline::CheckDataObject, make sure
info is the same thing as portInfo

If they are the same, start again. After
vtkPolyDataAlgorithm::FillOutputPortInformation, someone is removing
DATA_TYPE_NAME(). The only way to track it is to walk until
vtkDemandDrivenPipeline::CheckDataObject in the debugger.

I suspect that this will be something like mismatching symbols between
libraries because something is not recompiled or some write beyond
array bounds. I can't imaging what else it could be.

-berk

On Sat, Jan 30, 2010 at 7:23 PM, David Doria <daviddoria at gmail.com> wrote:
> On Sat, Jan 30, 2010 at 12:55 PM, Berk Geveci <berk.geveci at kitware.com> wrote:
>> I couldn't see anything obviously wrong. Try setting a breakpoint in
>> vtkDemandDrivenPipeline::CheckDataObject right before you open the
>> file. When you walk over that function, is there an output at all? If
>> no, is DATA_TYPE_NAME() set to anything?
>
> I set a break point in CheckDataObject. I stepped through - It skips
> right to the 'else' on line 682 of vtkDemandDrivenPipeline.cxx.
>
> I've never tried debugging in paraview before - is there a way to
> check the value of DATA_TYPE_NAME() without adding an output line such
> as:
> cout << vtkDataObject::DATA_TYPE_NAME();
>
> and recompiling?
>
> It takes a long time to compile Paraview so I'm sure this is a
> terribly inefficient way to debug... but the debugger in KDevelop3 (an
> interface to gdb) doesn't show values of things when you hover the
> mouse over them so I'm not sure how to see it without using this
> method.
>
> I looked at portInfo->Request->Name->*Name in the local variables of
> the debugger and it is empty - is this the same as DATA_TYPE_NAME()?
>
> I'm not doing anything fancy - my class is derived from
> vtkPolyDataAlgorithm and I haven't changed anything related to the
> pipeline except for:
> this->SetNumberOfInputPorts(0);
>
> so shouldn't this "just work"?
>
> Thanks,
>
> David
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://www.paraview.org/mailman/listinfo/paraview
>


More information about the ParaView mailing list