Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
failpoint — Go के लिए फॉल्ट-इंजेक्शन लाइब्रेरी जो एनवायरनमेंट वेरिएबल्स के माध्यम से पैनिक्स, स्लीप्स, रिटर्न्स और कंडीशनल एरर पाथ को ट्रिगर करने के लिए रनटाइम-नियंत्रणीय फेलपॉइंट्स जोड़ती है। | Kitploit
उपकरण/GitHubGitHub/pingcap/failpoint
सामान्य उपयोगिताएँडीबगर्सकैओस इंजीनियरिंगकैओस इंजीनियरिंग में शीर्ष #18
GitHubpingcap/failpoint

failpoint

Go के लिए फॉल्ट-इंजेक्शन लाइब्रेरी जो एनवायरनमेंट वेरिएबल्स के माध्यम से पैनिक्स, स्लीप्स, रिटर्न्स और कंडीशनल एरर पाथ को ट्रिगर करने के लिए रनटाइम-नियंत्रणीय फेलपॉइंट्स जोड़ती है।

रिपॉजिटरी देखें
89668591 महीना पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

failpoint

LICENSE Language Go Report Card Build Status Coverage Status Mentioned in Awesome Go

Golang के लिए failpoints का एक कार्यान्वयन। फेल पॉइंट्स (fail points) का उपयोग कोड पॉइंट्स जोड़ने के लिए किया जाता है जहाँ त्रुटियाँ उपयोगकर्ता-नियंत्रित तरीके से इंजेक्ट की जा सकती हैं। फेल पॉइंट एक कोड स्निपेट है जो केवल तब निष्पादित होता है जब संबंधित failpoint सक्रिय हो।

Quick Start (use failpoint-ctl)

  1. failpoint-ctl को सोर्स से बनाएँ

    git clone https://github.com/pingcap/failpoint.git
    cd failpoint
    make
    ls bin/failpoint-ctl
    
  2. अपने प्रोग्राम में failpoints इंजेक्ट करें, उदा.:

    package main
    
    import "github.com/pingcap/failpoint"
    
    func main() {
        failpoint.Inject("testPanic", func() {
            panic("failpoint triggerd")
        })
    }
    
  3. अपने कोड को failpoint-ctl enable के साथ रूपांतरित करें

  4. go build के साथ बनाएँ

  5. GO_FAILPOINTS पर्यावरण चर के साथ failpoints सक्षम करें

    GO_FAILPOINTS="main/testPanic=return(true)" ./your-program
    

    नोट: GO_FAILPOINTS InjectCall प्रकार के मार्कर के साथ काम नहीं करता है।

  6. यदि आप परीक्षण चलाने के लिए go run का उपयोग करते हैं, तो अपने कमांड में जनरेट की गई binding__failpoint_binding__.go को जोड़ना न भूलें, जैसे:

    GO_FAILPOINTS="main/testPanic=return(true)" go run your-program.go binding__failpoint_binding__.go
    

Quick Start (use failpoint-toolexec)

  1. failpoint-toolexec को सोर्स से बनाएँ

    git clone https://github.com/pingcap/failpoint.git
    cd failpoint
    make
    ls bin/failpoint-toolexec
    
  2. अपने प्रोग्राम में failpoints इंजेक्ट करें, उदा.:

    package main
    
    import "github.com/pingcap/failpoint"
    
    func main() {
        failpoint.Inject("testPanic", func() {
            panic("failpoint triggerd")
        })
    }
    
  3. failpoint-toolexec के बिना कैश मिश्रण से बचने के लिए एक अलग बिल्ड कैश का उपयोग करें, और बनाएँ

    GOCACHE=/tmp/failpoint-cache go build -toolexec path/to/failpoint-toolexec

  4. GO_FAILPOINTS पर्यावरण चर के साथ failpoints सक्षम करें

    GO_FAILPOINTS="main/testPanic=return(true)" ./your-program
    
  5. आप go run या go test का भी उपयोग कर सकते हैं, जैसे:

    GOCACHE=/tmp/failpoint-cache GO_FAILPOINTS="main/testPanic=return(true)" go run -toolexec path/to/failpoint-toolexec your-program.go
    

Design principles

  • Failpoint को मान्य Golang कोड में परिभाषित करें, टिप्पणियों या किसी और चीज़ में नहीं

  • Failpoint की कोई अतिरिक्त लागत नहीं होती

    • नियमित लॉजिक पर प्रभाव नहीं डालेगा
    • नियमित कोड के प्रदर्शन में गिरावट नहीं लाएगा
    • Failpoint कोड अंतिम बाइनरी में दिखाई नहीं देगा
  • Failpoint रूटीन लिखने/पढ़ने योग्य है और कंपाइलर द्वारा जाँचा जाना चाहिए

  • Failpoint परिभाषा द्वारा जनरेट किया गया कोड पढ़ने में आसान है

  • इंजेक्टिंग कोड के साथ लाइन नंबर समान रखें (डिबग करना आसान)

  • context.Context के साथ समानांतर परीक्षणों का समर्थन करें

Key concepts

  • Failpoint

    फेलपॉइंट एक कोड स्निपेट है जो केवल तब निष्पादित होता है जब संबंधित failpoint सक्रिय हो। यदि failpoint.Disable("failpoint-name-for-demo") निष्पादित किया जाता है तो क्लोज़र कभी निष्पादित नहीं होगा।

    var outerVar = "declare in outer scope"
    failpoint.Inject("failpoint-name-for-demo", func(val failpoint.Value) {
        fmt.Println("unit-test", val, outerVar)
    })
    
  • Marker functions

    • यह सिर्फ एक खाली फ़ंक्शन है

      • रीराइटर को समानता वाले स्टेटमेंट के साथ रीराइट करने का संकेत देने के लिए
      • रीराइट नियम के रूप में कुछ पैरामीटर प्राप्त करने के लिए
      • यह कंपाइल समय पर इनलाइन होगा और बाइनरी में कुछ भी एमिट नहीं करेगा (शून्य लागत)
      • बाहरी स्कोप के चर कैप्चर करके क्लोज़र में एक्सेस किए जा सकते हैं, और परिवर्तित कोड अभी भी मान्य है क्योंकि सभी कैप्चर किए गए चर IF स्टेटमेंट के बाहरी स्कोप में स्थित होते हैं।
    • यह लिखना/पढ़ना आसान है

    • Failpoints के लिए एक कंपाइलर जाँच प्रस्तुत करता है जो failpoint कोड अमान्य होने पर नियमित मोड में संकलित नहीं हो सकता

  • Marker funtion list

    • func Inject(fpname string, fpblock func(val Value)) {}
    • func InjectContext(fpname string, ctx context.Context, fpblock func(val Value)) {}
    • func InjectCall(fpname string, args ...any) {}
    • func Break(label ...string) {}
    • func Goto(label string) {}
    • func Continue(label ...string) {}
    • func Fallthrough() {}
    • func Return(results ...interface{}) {}
    • func Label(label string) {}
  • Supported failpoint environment variable

    failpoint को निम्न पैटर्न वाले निर्यात पर्यावरण चर द्वारा सक्षम किया जा सकता है, जो freebsd failpoint SYSCTL VARIABLES के समान है।

    नोट: InjectCall को पर्यावरण चर द्वारा सक्षम नहीं किया जा सकता।

    [<percent>%][<count>*]<type>[(args...)][-><more terms>]
    

    तर्क निर्दिष्ट करता है कि कौन सी क्रिया करनी है; यह निम्न में से एक हो सकता है:

    • off: कोई कार्रवाई नहीं करें (failpoint कोड ट्रिगर नहीं करता)
    • return: निर्दिष्ट तर्क के साथ failpoint ट्रिगर करें
    • sleep: निर्दिष्ट मिलीसेकंड के लिए सोएं
    • panic: पैनिक करें
    • break: gdb निष्पादित करें और डीबगर में ब्रेक करें
    • print: इंजेक्ट वेरिएबल के लिए failpoint पथ प्रिंट करें
    • pause: पॉज़ तब तक रुकेगा जब तक failpoint अक्षम न हो जाए

How to inject a failpoint to your program

  • आप कॉल साइट पर failpoint इंजेक्ट करने के लिए failpoint.Inject को कॉल कर सकते हैं, जहाँ failpoint-name failpoint को ट्रिगर करने के लिए उपयोग किया जाता है और failpoint-closure को IF स्टेटमेंट के बॉडी के रूप में विस्तारित किया जाएगा।

    failpoint.Inject("failpoint-name", func(val failpoint.Value) {
        failpoint.Return("unit-test", val)
    })
    

    परिवर्तित कोड इस प्रकार दिखता है:

    if val, _err_ := failpoint.Eval(_curpkg_("failpoint-name")); _err_ == nil {
        return "unit-test", val
    }
    
  • failpoint.Value वह मान है जो failpoint.Enable("failpoint-name", "return(5)") द्वारा पारित किया जाता है, जिसे अनदेखा किया जा सकता है।

    failpoint.Inject("failpoint-name", func(_ failpoint.Value) {
        fmt.Println("unit-test")
    })
    

    OR

    failpoint.Inject("failpoint-name", func() {
        fmt.Println("unit-test")
    })
    

    और परिवर्तित कोड इस प्रकार दिखता है:

    if _, _err_ := failpoint.Eval(_curpkg_("failpoint-name")); _err_ == nil {
        fmt.Println("unit-test")
    }
    
  • इसके अलावा, failpoint क्लोज़र एक फ़ंक्शन हो सकता है जो context.Context लेता है। आप context.Context के साथ कुछ अनुकूलित चीज़ें कर सकते हैं जैसे नियंत्रित करना कि समानांतर परीक्षणों या अन्य मामलों में failpoint सक्रिय है या नहीं। उदाहरण के लिए,

    failpoint.InjectContext(ctx, "failpoint-name", func(val failpoint.Value) {
        fmt.Println("unit-test", val)
    })
    

    परिवर्तित कोड इस प्रकार दिखता है:

    if val, _err_ := failpoint.EvalContext(ctx, _curpkg_("failpoint-name")); _err_ == nil {
        fmt.Println("unit-test", val)
    }
    
टूल डाउनलोड करें