Come posso porre rimedio al “Il punto di interruzione non sarà attualmente colpito. Nessun simbolo è stato caricato per questo documento. " avvertimento?


1575

L'applicazione desktop C # sull'edizione express funzionava, quindi non funzionava 5 secondi dopo.

Ho provato quanto segue:

  • Accertarsi che la configurazione di debug, il flag di debug e le informazioni complete di debug siano impostate su tutti gli assembly.
  • Elimina tutte le cartelle bin e obj e tutte le DLL relative al progetto da tutta la mia macchina.
  • Ricreare i progetti che causano il problema da zero.
  • Reboot.

Ho due progetti WinForms nella soluzione. Uno di questi carica le informazioni di debug, l'altro no. Entrambi si riferiscono all'assembly su cui sto cercando di ottenere le informazioni di debug esattamente nello stesso modo nel file di progetto. Qualche idea?


Voglio aggiungere qui, soprattutto per me stesso quando torno a rivedere questa domanda, che i simboli non vengono caricati fino a quando non viene caricato l'assemblaggio e l'assemblaggio non viene caricato fino a quando non è necessario. Se il punto di interruzione si trova in una libreria utilizzata solo in una funzione nell'assieme principale, i simboli non verranno caricati (e mostreranno il punto di interruzione come non colpito) finché non viene chiamata quella funzione.


119
Durante il debug, vai alla vista Debug, Windows, Modules. Questo mostrerà informazioni sui moduli caricati e lo stato del simbolo. È possibile fare clic con il pulsante destro del mouse su un modulo e provare a caricare i simboli da un'altra posizione.
Polyfun,

14
L'edizione Express non ha la vista Moduli.
Istanza Hunter,

12
Un buon punto sugli assiemi non caricati fino a quando necessario. Il debugger mostrerà che il breakpoint non verrà colpito, ma il display cambierà / il tuo breakpoint verrà colpito una volta caricato l'assembly. Una soluzione approssimativa a questo problema dell'interfaccia utente sarebbe quella di effettuare una chiamata all'assembly all'avvio del programma per forzare il caricamento dell'assembly.
Tim Coker,

1
Ho avuto lo stesso problema e ho notato che per questa configurazione di build non avevo <DebugSymbols>true</DebugSymbols>sotto di esso in VS2015 l'ho aggiunto manualmente e ha funzionato bene.
kuskmen,

4
La rimozione del file .suo potrebbe aver risolto questo brutto problema nel mio progetto
Roland,

Risposte:


1083

Inizia il debug, non appena arrivato a un breakpoint o usato Debug > Break All, usa Debug > Windows > Modules. Vedrai un elenco di tutti gli assembly caricati nel processo. Individua quello per cui desideri ottenere informazioni di debug. Fare clic con il tasto destro del mouse e selezionare Symbol Load Information. Verrà visualizzata una finestra di dialogo che elenca tutte le directory in cui ha cercato il file .pdb per l'assembly. Verifica quell'elenco rispetto alla posizione effettiva .pdb. Assicurati che non ne trovi uno vecchio.

Nei progetti normali, l'assembly e il suo file .pdb devono essere sempre stati copiati dall'IDE nella stessa cartella del file .exe. La cartella bin \ Debug del tuo progetto. Assicurati di rimuoverne uno dal GAC se ci hai giocato.


4
In effetti, quello era il problema sul mio caso. Avevamo un postcompile che lo rendeva non essere considerato "Codice utente" ... ora, devo vedere che succede, ma ho confermato che senza le modifiche postcompilate, i simboli vengono caricati. @Hans grazie, mi ha fatto risparmiare qualche minuto! manda una birra virtuale
eglasio

29
La domanda riguarda l'edizione espressa, a cui questa risposta non si applica, sfortunatamente. In realtà nessuna delle risposte funziona per me, ho anche provato a rimuovere la cartella Debug e ricostruire.
Nicolas Raoul,

3
Microsoft Visual Studio Express 2013 per Web non dispone dell'opzione Moduli di debug per Windows. Come usare risolvere questo in questo caso?
Andrus

3
Come suggerimento, attiva le tue eccezioni in modo che si interrompano dove vuoi (se non riesci a mettere un punto di interruzione all'inizio del processo) ... Quindi segui il processo consigliato da Han di Debug> Windows> Moduli. Cerca il progetto a cui stavi tentando di entrare e guarda il PERCORSO. se dice "C: \ windows \ assembly", allora punta a una DLL GAC e NON al progetto ...
Andy Danger Gagne

5
avevo la configurazione della soluzione attiva della mia soluzione impostata su Rilascio, cambiandola di nuovo in Debug per risolvere il mio problema. Questa risposta mi ha aiutato a "ricordare" cosa cercare
Gilad,

436

Prima prova a ricostruire il tuo progetto facendo clic con il pulsante destro del mouse sul progetto> Ricostruisci Se non funziona, prova a ripulire il progetto (fai clic con il pulsante destro del mouse sul progetto> ripulisci)

Se non ha funzionato, controlla questo:

  1. Fare clic con il tasto destro del mouse sul progetto
  2. Seleziona [Proprietà]
  3. Seleziona la scheda [Build]
  4. Assicurarsi che [Definisci costante DEBUG] e [Definisci costante TRACE] siano selezionati
  5. Assicurarsi che [Ottimizza codice] sia deselezionato
  6. Fare clic sul pulsante [Avanzate] nella parte inferiore della scheda Crea
  7. Assicurati che [Informazioni debug:] sia impostato su [completo]
  8. Fare clic su [OK] e ricostruire il progetto ;-)

(il passaggio 6 genera i file .pdb, questi sono i simboli di debug)


40
Assicurati che [Informazioni debug:] sia impostato su [completo] - risolto il problema per me! Ho più configurazioni impostate sul mio progetto, le nuove che ho aggiunto non avevano questo set.
Chiefy,

1
Questo ha funzionato per me! Ma invece di [full] sono stato in grado di fare solo pdb
Aaron Shaver il

42
Ho scoperto che ero nella build di rilascio. tsk.
PNDA,

2
Se si dispone di un progetto misto C ++ / C # con un avvio nativo, assicurarsi che sia il progetto Debugging> Tipo debugger sia misto.
Bill Hoag,

4
Ho anche dovuto assicurarmi che Properties > Build > Optimize codefosse deselezionato .
jeffaudio,

273

Solo qualcosa di semplice da provare: potresti averlo già provato. Fare clic con il pulsante destro del mouse sulla soluzione in Esplora soluzioni, fare clic su "soluzione pulita", questo elimina tutti i file compilati e temporanei associati a una soluzione .

Eseguire una ricostruzione della soluzione e provare a eseguire nuovamente il debug.

Ho anche avuto problemi con i punti di interruzione di più progetti in una soluzione - alcuni compilati come x86, altri come x64.


5
Come hai risolto i punti di interruzione con più progetti in una soluzione, alcuni compilati come x86, altri come x64?
Richard Li,

3
Se si esegue IISExpress (o l'emulatore di Azure), i file in C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ File ASP.NET temporanei \ root potrebbero non essere aggiornati se AssemblyVersion è 1.0.0.0. Assicurati che sia qualcosa come 1.0. * In modo che venga generata una nuova versione ogni volta che costruisci il tuo progetto web. Clean Solution non cancella la cartella dei file temporanei Internet.
Michael Lang,

1
Questo fa la stessa cosa di fare un Rebuild All.
Jonathan Wood,

2
@jonathan Wood - Sono per lo più d'accordo. Ma in rare circostanze, Rebuild All può produrre risultati leggermente diversi: so di aver visto strane differenze a volte. Dai un'occhiata qui per qualche discussione interessante: stackoverflow.com/questions/1247457/…
Patrick

1
Per me è stato semplicemente "Build" ... "Clean Solution"
Dominic Isaia,

238

Disabilita l'opzione "Solo il mio codice" nelle impostazioni Debug / Generale.


2
Sì, su un progetto Windows Phone 8 con una configurazione di build personalizzata, questo è quello che ha fatto per me.
GONeale,

2
Ha funzionato per me con Windows Phone 8.1 e VS Community 2015.
Fabiano Araujo,

20
Giusto per essere chiari: in VS 2017, questa impostazione è specificatamente nella finestra di dialogo Strumenti, Opzioni nel riquadro Debug, Generale (non esiste un riquadro "Debug", per essere precisi). La casella di controllo si chiama "Abilita solo il mio codice" non "Solo il mio codice".
Jazimov,

1
Questo funziona per me, tuttavia non riesco a vedere il valore della variabile quando ho hover o shift + f9 che ottengono un errore Impossibile ottenere il valore di locale o argomento in quanto non è disponibile in questo puntatore di istruzione, probabilmente perché è stato ottimizzato via
Naveen Kumar

1
Funziona ancora in Visual Studio 2019!
Toby Caulk,

148

Pubblicare in modo incrociato questa correzione di Hans K che ho trovato nella discussione simile >> QUI << :

Fare clic con il tasto destro sulla soluzione -> Proprietà

Cerca in Proprietà comuni -> Progetto di avvio

Seleziona più progetti di avvio

selezionare Avvia azione sui progetti di cui è necessario eseguire il debug.


7
Questo gestisce anche le situazioni in cui si sta tentando di eseguire il debug di un progetto WEB che è un endpoint remoto .NET in esecuzione sul server di sviluppo VS e che mostra "nessun simbolo caricato".
D-Sect,

1
Questo mi ha risolto. Penso che in precedenza sombody avesse tentato di collegare il debug al server IIS locale invece della versione di debug di IIS utilizzata da Visual Studio.
Dowlers,

1
Se hai rimosso il file .suo puoi perdere le impostazioni della soluzione selezionate qui e dovrai
reimpostarle

Ho ricontrollato queste impostazioni oggi dopo aver eseguito correttamente il debug e ho scoperto che i miei progetti di avvio erano in qualche modo tornati a un singolo progetto di avvio. Vale la pena ricontrollare.
Anthony De Souza,

64

La risposta selezionata mi ha portato a risolvere il mio problema. Ma devo fare alcune cose in più:

Anche con "Debug" selezionato nel menu a discesa:

inserisci qui la descrizione dell'immagine

E nel progetto Proprietà> Crea:

inserisci qui la descrizione dell'immagine

Visual Studio non caricava simboli in un progetto specifico. Quindi in quel menu a discesa ho selezionato "Configuration Manager" e ho visto che le impostazioni del mio progetto web erano errate:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Quindi l'ho impostato su "Debug" e ha iniziato a generare il .pdbfile. MA ho bisogno di copiare manualmente il PDB e la DLL e inserire la cartella che VS stava cercando (qui è dove mi ha aiutato la risposta selezionata):

inserisci qui la descrizione dell'immagine


1
Stavo correndo in releasemodalità. Grazie !!
Dipak Telangre,

La chiave per me era che la casella 'Distribuisci' non era selezionata, quindi il pdb non veniva ridistribuito dopo la costruzione
Ben

43

Debug> Windows>Modules Per vedere quali moduli venivano caricati mi ha messo nella giusta direzione.

Nel mio caso, IIS Express sembrava caricare una DLL diversa dai file temporanei ASP.NET.

La soluzione?

  1. Sfoglia per C:\Users\<YOUR USER>\AppData\Local\Temp\Temporary ASP.NET Files\vs
  2. Elimina tutto in questa directory!

Questo era il mio problema, la cartella doveva essere piena di DLL rotte che venivano caricate come preferenza.
Gburton,

8
Questo ha funzionato per me, tranne nel mio caso, la directory che ho dovuto eliminare era C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files \ vs \
Andy

Ho avuto un problema simile in cui avevo già installato questa applicazione e stava caricando quella DLL invece di quella del mio progetto senza file PDB associato. Dopo aver disinstallato la vecchia app, il problema è stato risolto per me. Grazie!
Lenny K,

42

Sono stato in grado di correggere l'errore semplicemente impostando l'opzione "Allega al processo" su "Determina automaticamente il tipo di codice per il debug" come mostrato nello screenshot allegato.

Segui semplicemente i passaggi seguenti:

  • Vai a Debug dalla barra dei menu
  • Fai clic su Allega al processo
  • Vicino all'opzione Allega a , fai clic sul pulsante Seleziona
  • Il Select Codice Tipo apparirà la finestra
  • Ora seleziona l'opzione Determina automaticamente il tipo di codice per il debug e fai clic sul pulsante OK.

Risolto errore di debug


10
Per gli altri che hanno provato di tutto in questa pagina, ho risolto il mio problema passando a 'Codice gestito (v4.5, v4.0)'!
stevekrzysiak,

Il passaggio a "Managed (v4.5, v4.0)" ha risolto anche il problema con il debug di un'app ASP.Net DNN. Grazie!
Mmm,

Il passaggio da "Determinazione automatica del tipo di codice per il debug" a "Managed (v4.6, v4.5, v4.0)" ha funzionato per me. Ho una soluzione con librerie di 2 classi, una è accessibile COM, entrambe sono destinate al framework 4.6.1.
Jorb,

Ho selezionato un'opzione errata (".NET Core" invece di "Managed v4.6"). Ho scelto "Determina automaticamente ..." e ha funzionato! Inizialmente ho trovato questa soluzione su quel post sul blog blog.simontest.net/… .
Evgeni Nabokov

41

A volte, anche se ti dà questo errore, breakpointviene comunque colpito, quindi ignora l'errore. Questo accade abbastanza spesso nel Viewsdi MVC web app.


7
Questo dovrebbe effettivamente essere votato da qualche parte verso l'alto. Ho trascorso molto tempo a rispondere a tutte le risposte precedenti, ma il punto di interruzione sarebbe stato effettivamente colpito. Basta controllare :) Inoltre, si trattava di un'app desktop WPF.
Bartosz,

4
aspx sembra essere compilato su richiesta, quindi le informazioni di debug sono disponibili solo dopo che è necessaria la pagina aspx
aeroson

Anche per UnitTesting - devi aspettare qualche secondo e poi viene colpito.
David Refaeli,

Penso che il commento di @aeroson sia quello in cui mi sono imbattuto. Una pagina ha caricato i punti di interruzione, un'altra no. Ho provato tutti i tipi di cose dalle risposte qui, quindi ho aggiornato quella pagina e sono stati caricati i punti di interruzione.
arrivederci

grazie ... scavando in giro per mezz'ora e appena realizzato che il breakpoint viene ancora colpito ...
Kyle Huang

39

Controlla se il tuo file .pbd manca nella cartella bin / Debug. Se è quindi vai su "Proprietà" del tuo progetto, seleziona "Costruisci" e poi "Avanzate" in fondo. Scegli "completo" in "Informazioni di debug" nella nuova finestra visualizzata. Questo era il mio problema e l'ho risolto per me.

Mostra dove trovare l'impostazione


Suggerirei a chiunque di venire su questa pagina per assicurarsi che il pdb sia stato generato poiché questo è stato il problema per me.
EatATaco,

Grazie! "solo pdb" (piuttosto che pieno) era abbastanza. Inoltre, "Avanzate" è un pulsante nella parte inferiore di Build.
Greg Little

dove dovrebbero essere generati i pdbs?
ylka,

1
Grazie, questo è stato risolto per me dopo aver apportato nuove trasformazioni Web.config ed eliminato le configurazioni predefinite (come Web.Debug.config) fornite da VS 2017.
Ken Palmer,

1
Ho provato molte altre opzioni (sprecate quasi 2 ore) Questa opzione "completa" risolve il mio problema. Grazie!
SoftSan,

29

Nel mio caso, "Ottimizza codice" è stato verificato nelle proprietà del mio progetto. Ciò ha portato VS a vedere il mio assembly come "non il mio codice" e, a sua volta, non ha caricato i simboli per esso.

La soluzione era deselezionarla. Casella di controllo Posizione del codice di ottimizzazione


2
Anche questo era il mio problema, e ho affrontato tutte le soluzioni di cui sopra una per una, niente ha funzionato.
antikbd,

Deselezionai questa opzione, la soluzione pulita, la soluzione ricostruita, ecc ... VS considerava sempre il modulo come "Ottimizzato". L'unico modo in cui ho scoperto di forzare VS ad aggiornare le informazioni di debug era aumentare la versione dell'assembly del modulo.
Alphanoch,

L'unica soluzione che funziona per me, un # per te (# = ++++), ma posso votare solo una volta
Luis Lopez,


23

Prova a eseguire Visual Studio come amministratore all'interno di Windows.


1
Ho finito per eseguire msvsmon come amministratore sul computer remoto.
Bill Hoag,

Questa non è una soluzione che la gente dovrebbe seguire. Se questo risolve il problema, dovresti concentrarti sul perché avresti bisogno dei diritti di amministratore affinché VS sia in grado di leggere il contenuto del file .pdb del tuo progetto.
Jazimov,

@Jazimov Non sono d'accordo. Mentre mi piacerebbe passare del tempo a indagare su questo, nel mio caso questo ha risolto il mio problema e mi ha permesso di continuare a lavorare come sono sicuro che ha fatto anche per gli altri. Se vuoi esaminarlo e migliorare questa risposta, sentiti libero, ecco a cosa serve.
Andy,

Per essere chiari: ho capito che ha risolto il problema con Visual Studio, non è quello che stavo contestando. Io discuto la raccomandazione che gli altri accettano l'esecuzione l'IDE come la soluzione piuttosto che semplice una soluzione. Se l'esecuzione dell'IDE come amministratore risolve il problema, è necessario utilizzare le informazioni per risolvere la causa principale effettiva in modo che l'IDE non richieda i privilegi di amministratore per funzionare correttamente.
Jazimov,

21

Nel mio caso sto cercando di eseguire il debug in modalità relase. Una volta lo cambio in modalità debug. Sta funzionando


15

È necessario abilitare "Genera informazioni di debug" nelle impostazioni del compilatore


1
Dove dovrebbe essere?
MushyPeas,

10
È la stessa della risposta di juFo - Progetto> Proprietà> Costruzione> Avanzate> Informazioni di debug> Completo (o solo pdb)
Jeremy Thompson

Ascolta Jeremy Thompsen. Mi ha risolto il problema.
Thorkil Værge,

12

->Opzioni di debug ->Generale ->Deseleziona " Enable Just My Code"

Questo ha funzionato per me.


1
Sembra che potrebbe essere un'impostazione predefinita che vale la pena verificare se si aggiorna VS alla versione più recente (come era successo a me).
Agamennone,

10

Abbiamo trovato la causa del nostro problema. Questo codice utilizzava l'attributo "CodeBehind" nella direttiva Page del file .aspx invece dell'attributo "CodeFile" (ASP.NET 2.0 e successivi). Dopo giorni di disperazione, una semplice ricerca e sostituzione ha risolto il problema.


10

L'opzione "Avvia debug, Debug + Windows + Moduli" non esiste nell'edizione 2013 di Microsoft Visual Studio Express.

Deselezionando "Usa modalità di compatibilità gestita" in Opzioni strumenti, il debug consente di risolvere il problema.



9

Ho provato tutto quanto menzionato sopra, ma niente ha funzionato. [Soluzione pulita, controllo dei file PDB ecc.]

Anche la pubblicazione della stessa soluzione non ha risolto il problema.

Poi sono tornato a ciò che di solito faccio per risolvere (imbrogliare questo testuale Visual Studio)

Tutto quello che ho fatto è stato apportare una modifica deliberata al codice e pubblicare la soluzione. Quindi ho ripristinato la modifica e pubblicato di nuovo.

Voila [i file PDB si liberano degli spiriti maligni] .. Non una risoluzione intelligente, ma questo ha funzionato .. Sorry |


7

Solo applicazioni Web (IIS Express):

  • Fare clic con il tasto destro del mouse su IIS Express Tray e chiudere IIS.
  • Soluzione pulita

Vassoio IIS


Ho provato molti altri suggerimenti in altre risposte, molti dei quali mi hanno aiutato in passato, ma oggi questo mi ha aiutato. Nel mio caso ho più rami e penso che IIS Express fosse in qualche modo bloccato su un ramo diverso e non si aggiornasse con il ramo che stavo cercando di eseguire il debug, nonostante i miei numerosi tentativi di Clean and Rebuild.
Chris H,

6

Nessuna di quelle risposte ha risolto il mio problema. Ho provato un'altra cosa basandomi sul fatto che il progetto con l'arresto non era in realtà il progetto caricato. Ho scoperto che Hans Passant ha scritto che il .dll in cui desidero interrompere il debugger e i file .pdb associati dove sono stati copiati vicino al file .exe. Quei file hanno avuto una data precedente, quindi ho pensato che non fossero stati aggiornati in fase di esecuzione. Li ho eliminati manualmente, Visual Studio ne ha creato un'altra e ho messo questa nuova coppia vicino a .exe. Ora i breakpoin funzionano!

Forse Visual Studio non è in grado di copiare e SOSTITUIRE i file esistenti (.dll e .pdb) vicino a .exe poiché ce ne sono altri. Quindi se cancellassi manualmente allora VS potrebbe crearne uno nuovo vicino a .exe.

Penso che un altro cambiamento (controlli e così via - dalle altre risposte) abbia innescato qualcosa e Visual Studio abbia copiato e sostituito la dll e la pdb dalla cartella del progetto alla cartella vicino a exe, quindi quella era una soluzione.

Penso che la causa principale del problema sia che Visual Studio utilizza un altro file in fase di esecuzione, nessun file dal progetto, con l'arresto.

Forse questa risposta per aiutare qualcuno!


6

Cose da controllare solo per essere chiari: assicurati di avere la configurazione impostata su "Debug" e non su "Rilascio". È possibile eseguire il debug del progetto di avvio in modalità "Rilascio", ma non una libreria di classi referenziata.


6

Proprietà del progetto (quindi selezionare la configurazione della build)> Scheda Build> Avanzate ...> Informazioni di debug (elenco a discesa)

Impostare su "tutto" o "solo pdb", quindi ricostruire


ho fatto pdb_only, anche pulire e riavviare il browser
Jason

6

Invece di fare solo tutte queste cose

Chiudi e riapri

la soluzione risolverà il problema


Ha funzionato per me in Microsoft Visual Studio 2013 in: File> Chiudi soluzione, quindi File> Apri soluzione (dovrebbe essere precaricato con la stessa cartella in cui si trovava). I punti di interruzione sono passati immediatamente dalla bandiera gialla al rosso circolare. Quindi grazie.
Zargold,

Genio OMG! Grazie!!!
AresDev,

6

Ho avuto un problema simile e ho fatto quanto segue: Debug => Opzioni => Generale => Rimuovi il segno di spunta per "Abilita solo il mio codice" Questo ha funzionato per me ..


questo funziona anche per me
mohammed elshoraky,

6

Mi ci è voluto un po 'di tempo per provare altre opzioni sopra e per qualche strana ragione il debug ha smesso di funzionare.

Strumento -> Opzioni -> Debug -> Generale -> (deseleziona) Opzione "Richiedi file sorgente per abbinare esattamente la versione originale"


6
  1. Soluzione pulita e ricostruzione
  2. Verificare che la configurazione sia impostata su Debug
  3. Assicurarsi che il file PDB sia nella cartella Debug autonomamente
  4. Dal menu Debug fare clic su Abilita tutti i punti di interruzione

6

Controllare che le seguenti due impostazioni siano uguali in Visual Studio:

Fare clic con il tasto destro del mouse sul progetto di prova, andare su Proprietà, scheda Costruisci e guardare Target piattaforma

I miei sono tutti impostati su "Any CPU" quindi x64

inserisci qui la descrizione dell'immagine

Sulla barra del menu principale, vai a Test, Impostazioni test, Architettura processore predefinita

Il mio era impostato su X86

inserisci qui la descrizione dell'immagine

Modificandolo su X64 in modo che corrisponda all'impostazione precedente, il menu di Visual Studio integrato "Test di debug" ha funzionato e ha colpito i punti di interruzione che erano stati precedentemente ignorati con il messaggio "Il punto di interruzione non verrà attualmente raggiunto. Nessun simbolo è stato caricato per questo documento ”.

Aggiornare:

Per Visual Studio 2019 i menu sono stati leggermente spostati: inserisci qui la descrizione dell'immagine


5

So di essere in ritardo di anni, ma pensavo di aver fatto qualcosa di sbagliato e di aver seguito i passaggi precedenti, quindi mi sono reso conto di aver impostato la configurazione della soluzione su "Rilascio" per errore :)


1
Posso votare 10K volte? La cosa peggiore è che penso di averlo cercato su Google come 10 volte e ogni volta è lo stesso stupido errore. Forse Microsoft potrebbe suggerirlo all'utente?
tfrascaroli,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.