In many cases I find it helpful to look at the sampling points used by NIntegrate. Below are some examples:
Needs["Integration`NIntegrateUtilities`"]
NIntegrateProfile[NIntegrate[1/Sqrt[x], {x, 0, 1}]]
NIntegrateSamplingPoints[NIntegrate[1/Sqrt[x], {x, 0, 1}]]
NIntegrateSamplingPoints[
NIntegrate[1/Sqrt[x], {x, 0, 1},
Method -> {"GlobalAdaptive", "SingularityHandler" -> "IMT"}]]
NIntegrateSamplingPoints[
NIntegrate[1/Sqrt[x], {x, 0, 1},
Method -> {"LocalAdaptive", "SymbolicProcessing" -> 0,
"SingularityHandler" -> "IMT"}]]
NIntegrateSamplingPoints[
NIntegrate[1/Sqrt[x], {x, 0, 1},
Method -> {"GlobalAdaptive", "SingularityDepth" -> 20}]]
NIntegrateSamplingPoints[
NIntegrate[1/Sqrt[Abs[x]], {x, -2, 1},
Method -> {"GlobalAdaptive", "SingularityDepth" -> 2}]]
NIntegrateSamplingPoints[
NIntegrate[1/Sqrt[Sin[x]], {x, 0, \[Pi]},
Method -> {"GlobalAdaptive", "SingularityDepth" -> 2}]]