Skip to content

Issues when use ultra to profile native cpp game #24

@jsjtxietian

Description

@jsjtxietian

Hi, first of all, thanks for this awesome library! I always wanted to have a good tool for converting etw trace to gecko json format because I love the firefox prolfiler's UI, and before ultra I found https://github.com/mstange/samply, which is pretty great but there's some problem when dealing with my game's pdb, so I gave it up. And then I found ultra, simple, elegant and fast, I love it. Although ultra is not built for a native cpp game like my use case but it simply works out of box, which is pretty awesome, thank you so much.

I found some cases where it can be improved for my use case, IMHO I should raise it here for discussion

  • I find my game's main thread is named as "Startup thread", not the real name "GameThread", likely because ultra did not listen to the ThreadSetName event? I hacked it to print all names set and I can find the "GameThread" there
  • when method index is invalid, the func name is simply output as raw adress, IMHO it can have a moduleName as prefix, like "xxx.dll!0x1234"
  • I find the symbolication process a bit slow dispite I have local symbol cache, maybe it's because I'm in China, I will investigate more on this and find out why it's slow. Update: My game has around 1200 symbols to load and it's just a for loop, IMHO it may not be easy to parallel the for loop, maybe can parallel the trace thread converting part?

Thanks and looking forward to get some feedback!

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions