Oracle Solaris Studio 12.3 Part No: E26466 2011 12
Copyright 2011 500 Oracle Parkway, Redwood City, CA 94065 U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are commercial computer software pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government. redundancy Oracle Java Oracle Corporation Intel Intel Xeon Intel Corporation SPARC SPARC International, Inc. AMD Opteron AMD AMD Opteron Advanced Micro Devices, Inc. UNIX The Open Group 120220@25097
...5 1...9...9... 10... 10... 10... 11 GUI... 11... 12 2...13... 13... 14... 15 GUI... 16 A...19... 19... 20... 20...21 3
4
Oracle Solaris Studio 12.3 Discover Uncover GUI Oracle Solaris Studio Oracle Solaris SPARC Oracle Solaris Linux x86 x86 x86 64 32 x86 x64 64 x86 CPU 32 x86 x86 32 Linux Linux x86 Oracle Solaris SPARC x86 Oracle Solaris Oracle Solaris Studio 12.3 Oracle Solaris Studio Oracle Solaris Studio Oracle Solaris Studio Documentation Web 5
dbxtool DLight IDE F1 Web URL Web Oracle Oracle Oracle Oracle Solaris Studio Oracle Technical Network Web Oracle Oracle My Oracle Support http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info http://www.oracle.com/pls/topic/ lookup?ctx=acc&id=trs 6 Oracle Solaris Studio 12.3 2011 12
P 1 AaBbCc123 AaBbCc123 AaBbCc123.login ls -a system% system% su password: rm filename 5 \ sun% grep ^#define \ XV_VERSION_STRING Oracle Solaris OS UNIX Oracle Solaris C machine_name% command y n [filename] C machine_name# command y n [filename] Bash Korn Bourne $ command y n [filename] Bash Korn Bourne 7
# command y n [filename] [] filename ( ) 1 ( : Shift ) Enter Return (-) 2 Ctrl-D Control D 8 Oracle Solaris Studio 12.3 2011 12
1 1 Oracle Solaris Studio Oracle Solaris C C++ 9 11 11 GUI 12 3 Discover Uncover 9
C C++ -xanalyze=code 13 19 Discover Discover Discover Discover 14 20 Uncover Uncover 15 10 Oracle Solaris Studio 12.3 2011 12
GUI Oracle Solaris Studio 12.3 C C++ Solaris 10 10/08 Solaris 10 update Oracle Solaris 11 SPARC x86 GUI Discover Uncover GUI : GUI GUI Oracle Solaris Studio 12.3 1 11
Discover Uncover % cc -xanalyze=code *.c % cc -g *.c % cp a.out a.out.save % discover -a a.out % a.out % cp a.out.save a.out % uncover a.out % a.out % uncover -a a.out.uc % code-analyzer a.out 12 Oracle Solaris Studio 12.3 2011 12
2 binary_name.analyze binary_name.analyze Discover Uncover 13 14 15 16 GUI C C++ Oracle Solaris Studio 12.3 C C++ -xanalyze=code (-xanalyze=code Oracle Solaris Studio ) binary_name.analyze static -xanalyze=code -xanalyze=code ix [0,9] ABW ( ) 13
void f(int fd, int array[10]) { int ix; read(fd, &ix, sizeof(ix)); array[ix] = 0; } GUI (16 GUI ) C C++ Discover 2 Discover Oracle Solaris Studio 12.3 C C++ -g Discover Discover Oracle Solaris Studio 12.3 Discover Uncover Oracle Solaris Studio 12.3 Discover Uncover 14 Oracle Solaris Studio 12.3 2011 12
Discover Uncover 1 Uncover Discover Uncover : cp a.out a.out.save : 1. Discover -a discover -a binary_name Oracle Solaris Studio 12.3 Discover Discover -a 2. binary_name.analyze dynamic Discover Oracle Solaris Studio 12.3 Discover Uncover discover -c -F -N -T -a (16 GUI ) GUI C C++ Uncover Uncover 3 2 15
GUI Uncover Oracle Solaris Studio 12.3 C C++ -g Discover Uncover : cp a.out.save a.out : 1. Uncover uncover binary_name 2. 1 binary_name.uc 3. Uncover -a uncover -a binary_name.uc binary_name.analyze coverage Oracle Solaris Studio 12.3 Uncover Uncover -a GUI GUI 1 2 3 GUI code-analyzer code-analyzer binary_name GUI binary_name.analyze 16 Oracle Solaris Studio 12.3 2011 12
GUI GUI > GUI / Oracle Solaris Studio 12.3 2 17
18
A Discover Uncover ABR: (beyond Array Bounds Read) ABW: (beyond Array Bounds Write) DFM: (Double Freeing Memory) ECV: (Explicit type Cast Violation) FMR: (Freed Memory Read) FMW: (Freed Memory Write) INF: (INFinite empty loop) MFR: (Missing Function Return) MRC: malloc (Missing malloc Return value Check) NFR: (uninitialized Function Return) NUL: NULL (NULl pointer dereference, leaky pointer check) RFM: (Return Freed Memory) UMR: (Uninitialized Memory Read, Uninitialized Memoey Read bit operation) 19
URV: (Unused Return Value) VES: (out-of-scope local Variable usage) ABR: (beyond Array Bounds Read) ABW: (beyond Array Bounds Write) BFM: (Bad Free Memory) BRP: realloc (Bad Realloc address Parameter) CGB: (Corrupted Guard Block) DFM: (Double Freeing Memory) FMR: (Freed Memory Read) FMW: (Freed Memory Write) IMR: (Invalid Memory Read) IMW: (Invalid Memory Write) OLP: (OverLaPping source and destination) PIR: (Partially Initialized Read) SBR: (beyond Stack Bounds Read) SBW: (beyond Stack Bounds Write) UAR: (UnAllocated memory Read) UAW: (UnAllocated memory Write) UMR: (Unitialized Memory Read) AZS: 0 (Allocating Zero Size) SMR: (Speculative unitialized Memory Read) 20 Oracle Solaris Studio 12.3 2011 12
B binary_name.analyze, 13, 16 coverage, 16 dynamic, 15 static, 13 G -g, 14, 16 X -xanalyze=code, 10, 13,, 11 GUI, 16, 11, 10, 20, 14, 10, 19, 9 binary_name.analyze, 13, 15, 13, 13, 14, 10, 20, 20, 5 6, 5 21
Discover, 14, 15 Uncover, 16 Discover, 14 Uncover, 16, 11 22 Oracle Solaris Studio 12.3 2011 12