Computer | Constraints |
Blue Gene/L and Blue Gene/P | On Blue Gene/L and Blue Gene/P, you can create one watchpoint. TotalView sets the data address compare (DAC) registers of the PPC440 Embedded Processor to watch for memory writes to a range of addresses, specified by a watched address and length. The watchpoint triggers if the referenced data address is greater than or equal to the watched address and less than the watched address plus length. |
Blue Gene/Q | On Blue Gene/Q, you can create two watchpoints. TotalView sets a watchpoint using the IBM CDTI debugging interface for memory writes to a range of addresses, specified by a watched address and length. The watchpoint triggers if the referenced data address is greater than or equal to the watched address and less than the watched address plus length. The watched length must be a power of 2, and the watched address must be aligned to that power of 2; that is, (address % length) == 0. |
IBM AIX | You can create one watchpoint on AIX 4.3.3.0-2 (AIX 4.3R) or later systems running 64-bit chips. These are Power3 and Power4 systems. (AIX 4.3R is available as APAR IY06844.) A watchpoint cannot be longer than 8 bytes, and you must align it within an 8-byte boundary. If your watchpoint is less than 8 bytes and it doesn’t span an 8-byte boundary, TotalView figures out what to do. You can create compiled conditional watchpoints when you use this system. When watchpoints are compiled, they are evaluated by the process rather than having to be evaluated in TotalView where all evaluations are single-threaded and must be sent from separately executing processes. Only systems having fast traps can have compiled watchpoints. |
Linux x86 | You can create up to four watchpoints and each must be 1, 2, or 4 bytes in length, and a memory address must be aligned for the byte length. That is, you must align a 4-byte watchpoint on a 4-byte address boundary, and you must align a 2-byte watchpoint on a 2-byte boundary, and so on. |
Linux x86-64 (AMD and Intel) | You can create up to four watchpoints and each must be 1, 2, 4, or 8 bytes in length, and a memory address must be aligned for the byte length. For example, you must align a 4-byte watchpoint on a 4-byte address boundary. |
Linux-PowerLE | On Linux-PowerLE platforms (but not Linux-Power big-endian platforms) TotalView uses the Linux kernel's ptrace() PowerPC hardware debug extension to plant watchpoints. The ptrace() interface implements a “hardware breakpoint” abstraction that reflects the capabilities of PowerPC BookE and server processors. If supported at all, the number of watchpoints varies by processor type. Typically, the PowerPC supports at least 1 watchpoint up to 8 bytes long. Systems with the DAWR feature support a watchpoint up to 512 bytes long. The watchpoint triggers if the referenced data address is greater than or equal to the watched address and less than the watched address plus length. Alignment constraints may apply. For example, the watched length may be required to be a power of 2, and the watched address may need to be aligned to that power of 2; that is, (address % length) == 0. |
Linux IA-64 | You can create up to four watchpoints. The length of the memory being watched must be a power of 2 and the address must be aligned to that power of 2; that is, (address % length) == 0. |
Linux ARM64 | TotalView supports watchpoints for ARMv8 processors using the hardware’s debug watchpoint registers. You can typically create up to four watchpoints (although some processors may have different limits, allowing from 2 to 16 watchpoints, or none at all). Each must be 1, 2, 4, or 8 bytes in length, and the watched memory address must be aligned for the byte length. Watchpoints cannot overlap. |
Solaris SPARC and Solaris x86 | TotalView supports watchpoints on Solaris 7 or later operating systems. These operating systems let you create hundreds of watchpoints, and there are no alignment or size constraints. However, watchpoints can’t overlap. |