It seems like Pin can do this after all. There is an example tool named 'pinatrace' that traces all the memory access address, whether it is read or write etc. It is not a visual result. It writes all the access information on a text file. It can be a huge file depending on your program's memory footprint and usage.
But it is possible to filter these by changing the injected code in the pin tool's (pinatrace) code, in case you only want to know the access order for a particular array or something (which was my case).
Hope this helps anyone facing similar problem.