Figure our what global and static variables are accessed by what functions (at runtime)

Hi,

I think that I can use the watchpoint command to set watchpoints on
all global and static variables. Then run the lldb and parse the
screen output to see what global and static variables are
read/write-accessed by what functions. Is this a good strategy? Is
there any other better ways to figure this kind of information out?

Normally, a CPU only allows a very small (as in, ~4) watchpoints. So I think this strategy is bound to fail.

If you really need dynamic information about this sort of thing (and not just the static "does the function reference this variable" kind), then I'd suggest trying to combine the static information (obtained either through analysis of the debug info, by looking at the relocations in the object files, or from the source code) with some dynamic instrumentation framework (the kinds used for coverage analysis) that can tell you whether a particular line of code (instruction) got executed.

Normally, a CPU only allows a very small (as in, ~4) watchpoints. So I
think this strategy is bound to fail.

Thanks. I see there only 4 hardware watchpoints are supported on my
machine. Is there a way to set software watchpoints?

If you really need dynamic information about this sort of thing (and not
just the static "does the function reference this variable" kind), then
I'd suggest trying to combine the static information (obtained either
through analysis of the debug info, by looking at the relocations in the
object files, or from the source code)

Static information is also helpful here. Do you have specific
information on what tools can help to provide such information?
Thanks.

with some dynamic instrumentation
framework (the kinds used for coverage analysis) that can tell you
whether a particular line of code (instruction) got executed.

Do you have specific tools to recommend? Thanks.