vsk added a comment.

In D85705#2211607 <https://reviews.llvm.org/D85705#2211607>, @clayborg wrote:

> In D85705#2211073 <https://reviews.llvm.org/D85705#2211073>, @vsk wrote:
>
>> This looks very cool, thanks @clayborg! I think using JSON to describe the 
>> trace data (what kind of trace is this, what's in it, etc.) sounds 
>> reasonable.
>>
>>> For "trace load", I get the plugin for the JSON file by matching it up with 
>>> the "name" field in the JSON, but I don't store the "trace_sp" anywhere. We 
>>> will need to store it with the target that we create, or for later commands 
>>> add it to a target that is stopped when the trace data is loaded via the 
>>> process interface (through lldb-server is the current thinking for this).
>>
>> Have you considered what might happen if there are multiple targets covered 
>> by a single trace? Strawman proposal: would it make sense to register the 
>> trace with a Debugger instance? This can be a list of traces if it makes 
>> sense to support debugging more than one trace at a time.
>
> I hadn't thought of that but that does make sense!
>
> We can work this all into the JSON format. We should actually make a schema 
> for the common parts of information that should be represented in the JSON 
> and also allow each plug-in to supply a schema for the parts that is requires 
> in the JSON.
>
> Some ideas that this information should contain:
>
> - array of process infos dictionaries
> - process info dictionary
>   - pid
>   - array of shared library dictionaries
> - shared library dictionary:
>   - original path
>   - UUID if available
>   - MD5 of file if no UUID
>   - load location
>   - optional URL to download
>
> And LLDB will easily be able to load up N targets with everything setup 
> correctly.

I'm generally on board with this. On Darwin we tend not to have the original 
path to a DSO available, so I'd argue that that ought to be optional as well. 
Really the only mandatory stuff for debugging purposes is the load address and 
some kind of UUID.

>>> "trace dump" does nothing for now, but this is what we can use to test that 
>>> "trace load" worked and was able to create a target.
>>
>> It'd be great to have some test for this, even if all 'trace load' does at 
>> this point is print an error about bad JSON input.
>
> I agree! If we like this format, Walter Erquinigo can commandeer this 
> revision and fill in actual Intel PT guts and have this work. The idea is I 
> am going to get the infrastructure in place and once we work this out, I will 
> let Walter take over the patch and actually fill it in with real Intel PT 
> stuff and test it fully.




Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85705/new/

https://reviews.llvm.org/D85705

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to