Accurate positioning is highly desirable in urban canyons where satellite signals are easily reflected or blocked by buildings, leading to severe multipath effects or non-light-of-sight (NLOS) receptions. Anti-multipath techniques, e.g., careful antenna or correlator designs, however, have little improvement for NLOS reception. Existing NLOS detection techniques, e.g., the usage of dual-polarization antenna, or fish-eye camera, require external aiding, which is not suitable for low-cost global positioning system (GPS) receivers, e.g., smartphones or wearable devices. In this paper, we use features, such as multi-correlator or code discriminator outputs, extracted at the signal tracking level, to detect NLOS reception in a vector tracking-based software receiver. Multiple correlators with small spacings also help to find the NLOS path delay, which will be further compensated for updating the extended Kalman filter for positioning. Experimental results using real GPS signals in an urban area in Hong Kong show that the proposed method is capable of detecting the NLOS reception and preventing the positioning error from increasing during the NLOS reception period. By comparison, conventional tracking loops would lock onto the incoming NLOS signal and cannot detect its existence, thus reporting an increased positioning error.