site_archiver@lists.apple.com Delivered-To: darwin-dev@lists.apple.com Hi Steven, Thanks anyway Vincent On 18 Feb 2008, at 3:38 PM, Steven Bytnar wrote: man vmmap vmmap has been around since at least 10.2. Here's an example of the output: % vmmap -pages screen Virtual Memory Map of process 5755 (screen) Output report format: 2.2 -- 32-bit process ==== Legend SM=sharing mode: COW=copy_on_write PRV=private NUL=empty ALI=aliased SHM=shared ZER=zero_filled S/A=shared_alias REGION TYPE [ VIRTUAL] =========== [ =======] MALLOC [ 2582] STACK GUARD [ 14344] Stack [ 2048] __DATA [ 139] __LINKEDIT [ 1149] __PAGEZERO [ 1] __TEXT [ 596] shared memory [ 2] --Steve Dear List, Thanks in advance Vince _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-kernel mailing list (Darwin-kernel@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-kernel/sbytnar%40kagi.com _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-dev mailing list (Darwin-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-dev/site_archiver%40lists.appl... I am aware of vmmap, but perhaps I did not make the nature of my problem very clear. My application needs to know about these pages, and needs to be able to access information about the pages. Additionally vmmap does not tell one which pages are dirty, ,it just tells you about virtual memory allocated to a process. I need to know on a page by page basis (i.e. currently 4096 bytes per page) which pages have been written to and the exact address of the changes within the page. ==== Non-writable regions for process 5755 __PAGEZERO 00000000-00001000 [ 1] ---/--- SM=NUL .../bin/screen __TEXT 00001000-00046000 [ 69] r-x/rwx SM=COW .../bin/screen __LINKEDIT 0004e000-00051000 [ 3] r--/rwx SM=COW .../bin/screen STACK GUARD 00051000-00052000 [ 1] ---/rwx SM=NUL STACK GUARD 00053000-00054000 [ 1] ---/rwx SM=NUL STACK GUARD 00068000-00069000 [ 1] ---/rwx SM=NUL STACK GUARD 0006a000-0006b000 [ 1] ---/rwx SM=NUL __TEXT 8fe00000-8fe31000 [ 49] r-x/rwx SM=COW / usr/lib/dyld __LINKEDIT 8fe68000-8fe76000 [ 14] r--/rwx SM=COW / usr/lib/dyld __TEXT 91a5c000-91bf6000 [ 410] r-x/r-x SM=COW ...tem.B.dylib __TEXT 93735000-93767000 [ 50] r-x/r-x SM=COW ...s.5.4.dylib __TEXT 93ff4000-94000000 [ 12] r-x/r-x SM=COW ...c_s.1.dylib __TEXT 9611c000-96122000 [ 6] r-x/r-x SM=COW ...mon.A.dylib __LINKEDIT 96e6e000-972da000 [ 1132] r--/r-- SM=COW ...mon.A.dylib STACK GUARD bc000000-bf800000 [ 14336] ---/rwx SM=NUL STACK GUARD fffec000-ffff0000 [ 4] ---/rwx SM=NUL shared memory ffff8000-ffffa000 [ 2] r-x/r-x SM=SHM ==== Writable regions for process 5755 __DATA 00046000-0004e000 [ 8] rw-/rwx SM=COW .../bin/screen MALLOC (freed?) 00052000-00053000 [ 1] rw-/rwx SM=PRV MALLOC_LARGE 00054000-00068000 [ 20] rw-/rwx SM=COW ...ne_0x100000 MALLOC (freed?) 00069000-0006a000 [ 1] rw-/rwx SM=COW MALLOC_TINY 00100000-00200000 [ 256] rw-/rwx SM=PRV ...ne_0x100000 MALLOC_TINY 00200000-00300000 [ 256] rw-/rwx SM=COW zone_0x0 MALLOC_SMALL 00800000-01000000 [ 2048] rw-/rwx SM=PRV ...ne_0x100000 __DATA 8fe31000-8fe68000 [ 55] rw-/rwx SM=COW / usr/lib/dyld __DATA a0336000-a0377000 [ 65] rw-/rwx SM=COW ...tem.B.dylib __DATA a0767000-a0770000 [ 9] rw-/rwx SM=COW ...s.5.4.dylib __DATA a0890000-a0891000 [ 1] rw-/rwx SM=COW ...c_s.1.dylib __DATA a0c02000-a0c03000 [ 1] rw-/rwx SM=COW ...mon.A.dylib Stack bf800000-c0000000 [ 2048] rw-/rwx SM=COW thread 0 ==== Summary for process 5755 ReadOnly portion of Libraries: Total=6980K resident=6700K(96%) swapped_out_or_unallocated=280K(4%) Writable regions: Total=18.3M written=224K(1%) resident=356K(2%) swapped_out=0K(0%) unallocated=18.0M(98%) On Mon, Feb 18, 2008 at 01:43:00PM +0200, Vincent Coetzee wrote: I am hoping someone on these lists can assist me with my little problem. If the problem is not appropriate to these lists, could someone please point me in the right direction. I have a requirement to know which memory pages (allocated by my application) have been written to during the execution of my application, I also need to know the addresses of the areas of the pages that have been changed. I have spent hours perusing the BSD and Darwin documents without finding anything that seems to allow for this. Does anyone know how to do this or can suggest something please, I am at my wits end. This email sent to sbytnar@kagi.com This email sent to site_archiver@lists.apple.com