Yosemite และ Valgrind


110

ช่วยบอกวิธีการติดตั้ง valgrind บน yosemite ได้ไหม? เมื่อฉันพยายามติดตั้งฉันได้รับ "การตรวจสอบเวอร์ชันเคอร์เนล ... ไม่รองรับ (14.0.0) กำหนดค่า: ข้อผิดพลาด: Valgrind ทำงานบน Darwin 10.x, 11.x, 12.x และ 13.x (Mac OS X 10.6 / 7/8/9)”

ไม่มีเส้นทางหรือการอัปเดตอย่างเป็นทางการและฉันไม่พบอะไรเลย (ยกเว้นhttp://comments.gmane.org/gmane.comp.kde.devel.bugs/1553705แต่ไม่สามารถแก้ไขปัญหานั้นได้)


4
ปัญหาที่ทราบเกี่ยวกับhomebrewข้อความที่ไม่น่า
hrbrmstr

@hrbrmstr ขอบคุณฉันได้แก้ปัญหานี้มาระยะหนึ่งแล้วโดยการติดตั้ง Ubuntu บนเครื่องเสมือนแล้วติดตั้ง valgrind บน Ubuntu
Kozlovzxc

คำตอบ:


287

เนื่องจากไม่มีรุ่นที่เสถียรที่รองรับ Yosemite คุณสามารถติดตั้งเวอร์ชันการพัฒนาล่าสุดด้วยไฟล์

brew install --HEAD valgrind

5
คำสั่งนี้ใช้ไม่ได้อีกต่อไป ฉันได้รับข้อความนี้:Error: Failed to download resource "valgrind--patch" Download failed: https://gist.githubusercontent.com/jacknagel/cd26a902d72aabd0b51d/raw/1a61a328a87a728dccbeef0594f6fe335e9bf917/valgrind-sdk-paths-Makefile-am.diff
André Caron

1
แม้ว่านี่จะเป็นความละเอียดที่ถูกต้องในขณะที่โพสต์ แต่ตอนนี้ Valgrind รองรับ OS X Yosemite ผ่านช่องทางการเผยแพร่ที่มีเอกสารของแอปพลิเคชัน
Rhys Kidd

50

ในขณะที่อาจเป็นเช่นนั้นในรอบการเผยแพร่ OS X ที่ผ่านมาที่ Valgrind ใช้เวลาช่วงหนึ่งก่อนที่จะได้รับการสนับสนุนคุณสมบัติที่เหมาะสมการสนับสนุน OS X 10.10 ขั้นพื้นฐานมีให้ใช้งานแล้วใน Valgrind trunk เนื่องจากงานสำคัญใน Yosemite รุ่นก่อนวางจำหน่าย

จากรายชื่อผู้รับจดหมาย:

เมื่อเร็ว ๆ นี้มีความพยายามบางอย่างในการปรับปรุงการสนับสนุนของ Valgrind สำหรับ Yosemite หากคุณพัฒนาบน Mac OS คุณอาจต้องการลองใช้ trunk (svn co svn: //svn.valgrind.org/valgrind/trunk) และรายงานการแตกหักที่คุณได้รับ การสนับสนุน Yosemite นั้นดีพอที่แอปพลิเคชั่นกราฟิกขนาดใหญ่อย่างน้อยหนึ่งตัว (Firefox) ทำงานได้ดี การสนับสนุนสำหรับรุ่นก่อนหน้า 10.9 (Mavericks) ได้รับการปรับปรุงอย่างมากเช่นกัน

โปรดทราบว่างานได้กำหนดเป้าหมายกระบวนการ 64 บิตเท่านั้น 32 บิตอาจใช้งานได้และอาจดีกว่าใน Mavericks แต่ฉันสงสัยว่ามันจะมีปัญหามากขึ้นใน Yosemite เนื่องจากการสนับสนุนชุดคำสั่ง 32 บิต x86 ของ Valgrind ไม่ผ่าน SSSE3

Julian Seward

http://sourceforge.net/p/valgrind/mailman/message/33047840/

การเปิดเผยข้อมูลทั้งหมด: ฉันเป็นหนึ่งในนักพัฒนา Valgrind ใหม่ที่สนับสนุนแพตช์เพื่อรองรับ OS X 10.10


14
+1 สำหรับการมีส่วนร่วมกับ valgrind วิ่งไปเทียบกับรหัสของฉัน มันชี้ให้เห็นถึงสาเหตุของความผิดพลาดในการแบ่งส่วนที่ทำให้ฉันคลั่งไคล้มาตลอด 24 ชั่วโมงที่ผ่านมาเนื่องจากฉันไม่สามารถหาสาเหตุได้
ArtOfWarfare

11

เวิร์กโฟลว์ svn ของ Valerio จะดาวน์โหลดทุกสาขาซึ่งเสียเวลาและทรัพยากร ขั้นตอนที่ดีกว่าคือการดาวน์โหลดเฉพาะลำต้น:

svn co svn://svn.valgrind.org/valgrind/trunk valgrind
cd valgrind
./autogen.sh
./configure
make
make install

สังเกตว่าการดาวน์โหลดนี้ใช้เวลานานกว่าที่มารีลีส. tar.bz ทำ ... เป็นเพียงการบีบอัดที่สร้างความแตกต่างอย่างมากหรือเป็นการดาวน์โหลดไฟล์ที่ไม่ได้เป็นอย่างอื่น? (ฉันเดาว่าอาจเป็นเซิร์ฟเวอร์ที่แตกต่างกัน ... หรือความแตกต่างระหว่างsvn coและcurl... )
ArtOfWarfare

+1: ทำงานได้ดี สิ่งเดียวที่ผมเปลี่ยนเป็นผมทำในตอนท้ายแทนsudo make install make installไม่แน่ใจว่าจำเป็นหรือไม่เพราะไม่ได้ลองในแบบของคุณ
ArtOfWarfare

8

นี่คือสิ่งที่ฉันทำ ฉันไม่มากก็น้อยมี Mac ที่สะอาดพร้อมติดตั้ง xcode ทำให้มันรวบรวมและทำงานโดยมีสิ่งต่อไปนี้:

# build/install autoconf/automake/libtool so that 'autogen' works
curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-2.69.tar.gz
tar -xzf autoconf-2.69.tar.gz 
cd autoconf-2.69
./configure && make && sudo make install
cd ..

curl -OL http://ftpmirror.gnu.org/automake/automake-1.14.tar.gz
tar -xzf automake-1.14.tar.gz
cd automake-1.14
./configure && make && sudo make install
cd..

curl -OL http://ftpmirror.gnu.org/libtool/libtool-2.4.2.tar.gz
tar -xzf libtool-2.4.2.tar.gz
cd libtool-2.4.2
./configure && make && sudo make install
cd ..

svn co svn://svn.valgrind.org/valgrind/trunk valgrind
cd valgrind
./autogen.sh
# important: configure-params, otherwise make ends in errors 
./configure -disable-tls --enable-only64bit --build=amd64-darwin 
make
# sudo, otherwise it fails due to permissions 
sudo make install  

โปรดทราบว่า callgrind_control (จาก valgrind-3.11.0 SVN) ดูเหมือนจะไม่ทำงานบน OS X ดูเหมือนว่า perl-script และเครื่องมือ commandline ที่เรียกใช้ (vgdb -l) จะพิมพ์สิ่งที่ 'ไม่คาดคิด' ซึ่งสคริปต์นั้นไม่ ' t แยกวิเคราะห์อย่างถูกต้อง (ดังนั้นจะไม่สามารถค้นหากระบวนการอื่นที่ทำงานด้วย valgrind)

หรืออีกวิธีหนึ่งสคริปต์ perl เรียกใช้ vgdb เราสามารถทำได้โดยตรง (เพียงแค่หารหัสกระบวนการของคุณด้วยตนเอง):

vgdb --pid=2858 instrumentation on

ที่ยอดเยี่ยมนี้เป็นว่าสิ่งที่ฉันต้องการที่จะได้รับ valgrind ทำงานบนโยเซมิตี 10.10.4 สิ่งเดียวที่คำสั่งดังกล่าวข้างต้นแสดงถึง -disable-TLS สลับมีอักขระยัติภังค์มากกว่ายัติภังค์ ASCII ปกติ
Tim Kane

ยินดีที่ช่วยได้ - ขอบคุณที่ชี้ยัติภังค์ (อัปเดต) ยังเพิ่มวิธีแก้ไขสำหรับปัญหา callgrind_control
kalmiya

7

ทำงานให้ฉันเมื่อ 10.10.1:

svn co svn://svn.valgrind.org/valgrind
cd valgrind
./autogen.sh
./configure
make
make install

พยายามแล้ว ฉันยอมแพ้ในขณะที่ดาวน์โหลดการทดสอบที่ไม่เกี่ยวข้องมากมาย
GrantJ

1
การทดสอบการถดถอยเป็นส่วนสำคัญของโปรแกรม Valgrind จากมุมมองของผู้พัฒนา ในขณะที่การเปิดตัว Valgrind อย่างเป็นทางการยังไม่ได้รับการปรับปรุงล่าสุดในการรองรับแพลตฟอร์ม OS X แต่คุณต้องดาวน์โหลดเวอร์ชันพร้อมการทดสอบ หากการดาวน์โหลด SVN มีปัญหาในการเชื่อมต่อของคุณด้วยเหตุผลใด ๆ แสดงว่ามีที่เก็บ GitHub ที่ไม่เป็นทางการ : github.com/liquid-mirror/valgrind
Rhys Kidd

7

วิธีแก้ปัญหาทั้งหมดที่แสดงที่นี่ล้มเหลวสำหรับฉัน ในที่สุดสิ่งที่ได้ผลคือการใช้พอร์ต mac

sudo port install valgrind-devel


3

ต่อไปนี้เป็นวิธีการติดตั้งโดยใช้แหล่งอื่นนอกเหนือจาก svn อย่างเป็นทางการ (เนื่องจากดูเหมือนว่าจะมีให้ใช้งานเป็นระยะ ๆ )

https://crispyappstudiosblog.wordpress.com/2015/07/07/installing-valgrind-on-osx-yosemite/

1) ไปที่ git mirror ของ svn และดาวน์โหลดเวอร์ชันล่าสุดที่มี: http://repo.or.cz/w/valgrind.git

2) คุณต้องใช้ VEX เช่นกันดังนั้นคว้าเวอร์ชันล่าสุดได้ที่นี่: http://repo.or.cz/w/vex.git

3) แยกทั้งสองอย่าง ใส่เนื้อหาทั้งหมดของVEXโฟลเดอร์ลงในโฟลเดอร์ชื่อ VEX ในระดับบนสุดของไดเร็กทอรี valgrind

cd ไปยังไดเร็กทอรี valgrind และดำเนินการดังต่อไปนี้:

Run ./autogen.sh

Run ./configure

Run make

Run sudo make install

ทดสอบโดยการรันvalgrind --versionคุณควรใช้งานอย่างน้อย 3.11.0 SVN เพื่อให้สามารถใช้งานได้กับ Yosemite Valgrind 3.11.0 SVN ทำงานบน OSX Yosemite 10.10.4


3

ฉันติดตั้งบน mac ของฉันโดยการติดตั้งhomebrewจากนั้นเรียกใช้ 3 คำสั่งนี้ในเทอร์มินัล

  1. brew update
  2. brew doctor
  3. brew install --HEAD valgrind

PS: ฉันมี Os X El Capitan (10.11) แต่ควรใช้กับเวอร์ชันก่อนหน้าด้วย


อะไรที่ใหม่กว่านั้น:valgrind: This formula either does not compile or function as expected on macOS versions newer than El Capitan due to an upstream incompatibility.
Alex

2

ในที่สุดฉันก็ให้ValgrindทำงานบนOSX El Capitan 10.11.1210.11.12

ผู้ใช้Kalmiyaคำตอบของได้ผลสำหรับฉันก่อนหลังจากที่ฉันติดตั้งเครื่องมือ Xcode commandline

พิมพ์สิ่งนี้ในเทอร์มินัล:

xcode-select - ติดตั้ง

ตอนนี้ทำตามโพสต์ของKalmiyaทีละขั้นตอน https://stackoverflow.com/a/30366798/3633475


mac book pro ของฉันได้อัปเดต mac os เวอร์ชันล่าสุดแล้วและเป็น 10.11.3 ไม่ใช่ 10.11.12! ข้อเสนอแนะของคุณยังไม่ได้ผลสำหรับฉัน นี่คือข้อผิดพลาดAssertion 'tst->os_state.pthread - magic_delta == self' failed.
SMMousavi

@SMMousavi ข้อผิดพลาด "Assertion 'test-> os_state.pthread - magic_delta == self'" ได้รับการแก้ไขสำหรับ Valgrind ในเวอร์ชันพัฒนา SVN
Rhys Kidd

@RhysKidd ขอบคุณมากสำหรับข้อมูล :)
SMMousavi

0

นี่คืออีกสิ่งหนึ่งในการติดตั้ง svn ก่อนหน้านี้ใช้งานไม่ได้สำหรับฉันเนื่องจากฉันจำเป็นต้องมีautomakeและautoconfติดตั้งซึ่งฉันไม่ได้ติดตั้งแม้ว่าฉันจะติดตั้งเครื่องมือบรรทัดคำสั่ง Xcode เวอร์ชันล่าสุดแล้วก็ตาม

ฉันได้รับสิ่งต่อไปนี้จากไซต์นี้ ฉันยังต้องเชื่อมโยงautomakeและautoconfหลังทำbrew install automakeและbrew install autoconfโดยการทำbrew link automakeและbrew link autoconfเพื่อให้สิ่งนี้ได้ผล

# Check out their repo...
$ svn co svn://svn.valgrind.org/valgrind/trunk valgrind-trunk
# and hop into it.
$ cd valgrind-trunk

# You need to have autoconf and automake installed to build Valgrind
# This example uses Homebrew to install these dependencies
# (MacPorts should also work)
# (Permission error? add sudo!)
$ brew install automake
$ brew install autoconf

# run autogen.sh in valgrind-trunk
$ ./autogen.sh

# Tricky, there are some hard wired paths in the Valgrind sources.
# You need to symlink the mach folder in your XCode SDK to /usr/include/mach
# Be sure to use the proper Xcode SDK "MacOSX10.10.sdk" in the path!
$ ln -sv /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/mach /usr/include/mach

# Run configure + set install paths in valgrind-trunk
$ ./configure --prefix=/usr/local

# Run Make and make install (permission error? add sudo!) in valgrind-trunk
$ make
$ make install

# Check it works
$ valgrind --version
valgrind-3.11.0.SVN

1
ในวันที่ 10.10.3 ยังไม่ประสบความสำเร็จ: $ make ... Making all in coregrind make[2]: *** No rule to make target '/usr/include/mach/mach_vm.defs', needed 'by m_mach/mach_vmUser.c'. Stop. make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2 แม้ว่า / usr / include / mach ถูกสร้างขึ้นภายใต้รูทเชื่อมโยงตามที่อธิบายไว้เป็นต้น
HopeNick

0

ฉันใช้คำแนะนำของ kalmiya เพื่อสร้าง valgrind เป็นแพ็คเกจ conda สำหรับ OSX Yosemite สำหรับผู้ที่ทำงานกับอนาคอนด้า / คอนด้าเพียงแค่ทำ

conda install -c https://conda.binstar.org/groakat valgrind

หมายเหตุด้านข้าง: ฉันจำเป็นต้องติดตั้งเครื่องมือบรรทัดคำสั่งตามที่อธิบายไว้ด้านล่างเพื่อรวบรวม valgrind

https://stackoverflow.com/a/30471647/2156909


0

ฉันได้รับ valgrind ใน Yosemite ที่รวบรวม แต่ต้องใช้แฮ็คเพื่อทำเช่นนั้น ในขณะที่ฉันคิดว่าคุณควรใช้xcode-select installเพื่อรับเครื่องมือบรรทัดคำสั่งทั้งหมด (หลังจากนั้น valgrind ควรทำให้ถูกต้อง) แต่ถ้าคุณไม่ต้องการทำเช่นนี้ (เช่นขนาดของเครื่องมือ Xcode ใหญ่เกินไป) คุณสามารถรับ Darwin OSX ได้ รหัสและคัดลอกไฟล์ต่อไปนี้ไปที่/usr/include/mach

   mach_vm.defs
    task.defs
    thread_act.defs
    vm_map.defs

สิ่งนี้อนุญาตให้มีการคอมไพล์และติดตั้งใหม่ทั้งหมดแม้ว่าจะทราบว่าเป็นการแฮ็กที่ค่อนข้างหย่อน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.