I need to get data from the window of the external program. This data is dynamic and changes each time the additional window is restarted. I have already found an offset, but I need to find the register of ecx that comes into my function from another function. I try to trace which function calls the function I need, it usually worked for other programs. But now when i trace the functions the trace lagging and stops. I set a breakpoint when creating the window to see all the actions that occur. I have an idea that the tracing stops, because in this program a lot of things work through additional Qt5 libraries as example Qt5Core.dll.
By default tracing is limited to reduce its overhead: it stops once it goes to a location not in the current database (external modules, runtime-allocated memory etc.), as well as functions marked as library code. You can change this behavior in tracing options (disable the “trace over” checkboxes).
Note that in some cases IDA may be unable to trace the execution even if you ask it to trace everything. For example, it is unable to trace any kernel code, as well as user code that is called by the kernel indirectly (e.g. window procedures, exception handlers and so on)